Wikibooks plwikibooks https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna MediaWiki 1.47.0-wmf.15 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 Wikipedysta:Persino/brudnopis 2 44693 551611 548276 2026-08-12T14:43:25Z Persino 2851 /* tytan */ 551611 wikitext text/x-wiki {{#invoke:Linki|UzyskajKodWikiLinku|strona=|wyspecjalizowana=tak}} {{Brudnopis/Persino/SzablonSubst|nazwa=Przetłumaczony|postęp=tak|kod języka{{=}}en|kod projektu{{=}}w|Statistical physics}} {{TOCRamka|Podział|Onomastyka}} ==Spis treści== * [[/Alfabet/]] * [[/Głoski///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////]] * [[/Przypadki/]] {{PobierzNumerArtykułu|Głoski|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wikipedysta:Persino/brudnopis/Głoski}} ---- {{#invoke:Łatki|są interwiki|nazwa=Wikipedia:Strona główna|kod projektu=w|kod języka=pl|wyspecjalizowana=tak}} ----- ==Spis treści== ** {{kompletność junior|2|17.03.2012}} [[Wikipedysta:Persino/brudnopis/Bałtowie|Bałtowie]] , {{kompletność junior|3|20.10.2020}} [[Wikipedysta:Persino/brudnopis/Celtowie|Celtowie]] ** {{kompletność junior|3|20.13.2112}} [[Wikipedysta:Persino/brudnopis/Bałtowie2|Bałtowie2]] ---- {{Nowiki|{{LiniaArtykułuKsiążki|nazwa przestrzeni nazw=Wikipedysta|nazwa jednostki=Persino/brudnopis/Bałtowie}}}} ---- {{Nowiki|{{LiniaArtykułuKsiążki|nazwa przestrzeni nazw=Wikipedysta|nazwa jednostki=Persino/brudnopis/Celtowie}}}} ---- {{Nowiki|{{LiniaArtykułuKsiążki|nazwa przestrzeni nazw=Wikipedysta|nazwa jednostki=Persino/brudnopis/Bałtowie2}}}} ---- Następny: {{NastępnyArtykuł|1|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie#Dlaczego warto to mieć na swoim twardzielu}} Poprzedni: {{PoprzedniArtykuł|1|nagłówek=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie#Dlaczego warto to mieć na swoim twardzielu}} Następny: {{NastępnyArtykuł|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie#Dlaczego warto to mieć na swoim twardzielu}} Poprzedni: {{PoprzedniArtykuł|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie#Dlaczego warto to mieć na swoim twardzielu}} {{SubNazwaNadArtykułu|1|2|nazwa przestrzeni nazw=(main)|nazwa jednostki=Uciążliwość zapachowa/Węch człowieka/Receptory węchowe i kodowanie zapachu}} {{LiczbaArtykułówKsiążki|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie}} {{PobierzNazwęArtykułu|5|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Borland C++ Compiler/Wprowadzenie}} {{PobierzNumerArtykułu|Widłakowate|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas flory Polski/Widłakowate}} {{PobierzNazwęArtykułu|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Atlas flory Polski/Poryblinowate}} {{PobierzNazwęArtykułu|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Uciążliwość zapachowa/Węch człowieka/Receptory węchowe i kodowanie zapachu}} {{PobierzNazwęArtykułu|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Podstawy teoretyczne chemii organicznej/Historia chemii organicznej}} {{#invoke:Linki|UzyskajKodWikiLinku|strona=|wyspecjalizowana=tak}} {{PreNowiki|{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Statystyka matematyczna/Średnie w matematyce statystycznej||Średnia arytmetyczna}}}} {{PreNowiki|{{#invoke:StronicowyParser|ZwróćSekcjęNagłówkaStrony|Matematyka dla liceum|Funkcja wykładnicza i logarytmiczna}}}} {{PreNowiki|{{#invoke:StronicowyParser|KtóraSekcjaStrony|Matematyka dla liceum|Funkcja wykładnicza i logarytmiczna}}}} {{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Statystyka matematyczna/Średnie w matematyce statystycznej||Średnia arytmetyczna}} {{PobierzNazwęArtykułu|1|nagłówek=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Statystyka matematyczna/Średnie w matematyce statystycznej}} {{PreNowiki|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Autorzy|analiza=tak|wyspecjalizowana=tak}}}} {{PreNowiki|{{#invoke:StronicowyParser|LiniaArtykułuKsiążki|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Koordynacja|analiza=tak|wyspecjalizowana=tak}}}} =='''tytan'''== [[wikibooks:Strona główna]] {{PobierzNumerArtykułu|Zaczynamy/Zbiory|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} {{PobierzNazwęArtykułu|2.1|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} ---- {{PobierzNumerArtykułu|Zaczynamy/Rozwiązywanie równań i nierówności|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} {{PobierzNazwęArtykułu|2.3|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} ---- {{PobierzNumerArtykułu|Logika/Zdanie|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} {{PobierzNazwęArtykułu|3.1|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Matematyka dla liceum/Zaczynamy/Zbiory}} ---- {{PobierzNumerArtykułu|Postulaty szczególnej teorii względności i rodzaje układów|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Postulaty szczególnej teorii względności i rodzaje układów}} {{PobierzNazwęArtykułu|1.1.1|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Wyprowadzenie i próba podważenia, praw: szczególnej i ogólnej teorii względności/Postulaty szczególnej teorii względności i rodzaje układów}} ---- {{PobierzNumerArtykułu|Alkany/Wzory strukturalne i izomeria alkanów|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Podstawy teoretyczne chemii organicznej/Historia chemii organicznej}} {{PobierzNazwęArtykułu|3.2|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Chemia organiczna/Podstawy teoretyczne chemii organicznej/Historia chemii organicznej}} ---- {{PobierzNumerArtykułu|Ewolucja człowiekowatych w miocenie i pliocenie|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} {{PobierzNazwęArtykułu|1.1|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} ---- {{PobierzNumerArtykułu|Mezopotamia - wstęp|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} {{PobierzNazwęArtykułu|2.1.1|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} ---- {{PobierzNumerArtykułu|Źródła historyczne|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} {{PobierzNazwęArtykułu|0.2|nagłówek=|poziomowo=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} ---- {{PobierzNumerArtykułu|Władcy Izraela|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} {{PobierzNazwęArtykułu|2.3.1.1|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} ---- {{PobierzNumerArtykułu|Majowie|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} {{PobierzNazwęArtykułu|2.9.3.2|poziomowo=tak|bez automatu=tak|nazwa przestrzeni nazw=(main)|nazwa jednostki=Historia powszechna/Ewolucja człowiekowatych w miocenie i pliocenie}} ---- c45pyve3pbmewrr8wsam2esqji1e9ah Szablon:Państwo dane Afganistan 10 46774 551606 494684 2026-08-12T13:58:31Z CommonsDelinker 1569 Replacing Flag_of_Afghanistan_(1919–1921).svg with [[File:Flag_of_Afghanistan_(1909–1926).svg]] (by [[:c:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR3|Criterion 3]] (obvious error) · This flag of Afghanistan w 551606 wikitext text/x-wiki {{ {{{1<noinclude>|państwo dane/opis</noinclude><includeonly>|#switch:{{{parametr|}}}</includeonly>}}} | link alias = Afganistan | nazwa alias = Afganistan | skrót = AFG | dopełniacz = Afganistanu | flaga alias = Flag of Afghanistan (2013–2021).svg | flaga alias-1880 = Flag of Afghanistan (1880–1901).svg | link alias-1880 = Emirat Afganistanu | flaga alias-1901 = Flag of Afghanistan (1901–1919).svg | link alias-1901 = Emirat Afganistanu | flaga alias-1919 = Flag of Afghanistan (1909–1926).svg | link alias-1919 = Emirat Afganistanu | flaga alias-1921 = Flag of Afghanistan (1921–1926).svg | link alias-1921 = Emirat Afganistanu | flaga alias-1926 = Flag of Afghanistan (1926–1928).svg | link alias-1926 = Królestwo Afganistanu | flaga alias-1928t = Flag of Afghanistan (1928).svg | link alias-1928t = Królestwo Afganistanu | flaga alias-1928 = Flag of Afghanistan (1928–1929).svg | link alias-1928 = Królestwo Afganistanu | flaga alias-1929t = Flag of Afghanistan (1929).svg | link alias-1929t = Emirat Afganistanu | flaga alias-1929 = Flag of Afghanistan (1929–1931).svg | link alias-1929 = Królestwo Afganistanu | flaga alias-1931 = Flag of Afghanistan (1931–1973).svg | link alias-1931 = Królestwo Afganistanu | flaga alias-1973 = Flag of Afghanistan (1973–1974).svg | link alias-1973 = Królestwo Afganistanu | flaga alias-1974 = Flag of Afghanistan (1974–1978).svg | link alias-1974 = I Republika Afganistanu | flaga alias-1978t = Flag of Afghanistan (1978).svg | link alias-1978t = Demokratyczna Republika Afganistanu | flaga alias-1978 = Flag of Afghanistan (1978-1980).svg | link alias-1978 = Demokratyczna Republika Afganistanu | flaga alias-1980 = Flag of Afghanistan (1980–1987).svg | link alias-1980 = Demokratyczna Republika Afganistanu | flaga alias-1987 = Flag of Afghanistan (1987–1992).svg | link alias-1987 = II Republika Afganistanu | flaga alias-1992t = Flag of Afghanistan (1992).svg | link alias-1992t = II Republika Afganistanu | flaga alias-1992 = Flag of Afghanistan (1992–2001).svg | link alias-1992 = Islamska Republika Afganistanu (1992-1996) | flaga alias-1996 = Flag of Taliban (original).svg | link alias-1996 = Islamski Emirat Afganistanu | flaga alias-1997 = Flag of Taliban.svg | link alias-1997 = Islamski Emirat Afganistanu | flaga alias-2001 = Flag of Afghanistan (2001–2002).svg | flaga alias-2002 = Flag of Afghanistan (2002–2004).svg | rozmiar = {{{rozmiar|}}} | nazwa = {{{nazwa|}}} | link = {{{link|}}} | altlink = {{{altlink|}}} | wariant = {{{wariant|}}} <noinclude> | par1 = 1880 | par2 = 1901 | par3 = 1919 | par4 = 1931 | par5 = 1980 | par6 = 1987 | par7 = 1992 | par8 = 1996 | par9 = 1997 | par10 = 2001 | par11 = 2002 </noinclude> }} kvs2d7lbinsbqup4t30yq0kjnlyns43 Szablon:Państwo dane Afganistan/opis 10 46776 551607 443798 2026-08-12T13:58:37Z CommonsDelinker 1569 Replacing Flag_of_Afghanistan_(1919–1921).svg with [[File:Flag_of_Afghanistan_(1909–1926).svg]] (by [[:c:User:CommonsDelinker|CommonsDelinker]] because: [[:c:COM:FR|File renamed]]: [[:c:COM:FR#FR3|Criterion 3]] (obvious error) · This flag of Afghanistan w 551607 wikitext text/x-wiki {{Podstrona dokumentacji}} == Kompletna lista flag == Podstawowa dokumentacja szablonu nie umożliwia podania takiego zestawienia, więc zostało ono umieszczone w rozszerzonej dokumentacji szablonu. Szablon zawiera dodatkowo flagi: <table class="wikitable"> <tr><th>nazwa</th><th>Obraz flagi (40px)</th><th>Nazwa pliku z flagą</th></tr> <tr><td><code>1880</code></td><td align=center>[[Plik:Flag of Afghanistan (1880–1901).svg|40px|border]]</td><td><code>Flag of Afghanistan (1880–1901).svg</code></td></tr> <tr><td><code>1901</code></td><td align=center>[[Plik:Flag of Afghanistan (1901–1919).svg|40px|border]]</td><td><code>Flag of Afghanistan (1901–1919).svg</code></td></tr> <tr><td><code>1919</code></td><td align=center>[[Plik:Flag of Afghanistan (1909–1926).svg|40px|border]]</td><td><code>Flag of Afghanistan (1909–1926).svg</code></td></tr> <tr><td><code>1921</code></td><td align=center>[[Plik:Flag of Afghanistan (1921–1926).svg|40px|border]]</td><td><code>Flag of Afghanistan (1921–1926).svg</code></td></tr> <tr><td><code>1926</code></td><td align=center>[[Plik:Flag of Afghanistan (1926–1928).svg|40px|border]]</td><td><code>Flag of Afghanistan (1926–1928).svg</code></td></tr> <tr><td><code>1928t</code></td><td align=center>[[Plik:Flag of Afghanistan (1928).svg|40px|border]]</td><td><code>Flag of Afghanistan (1928).svg</code></td></tr> <tr><td><code>1928</code></td><td align=center>[[Plik:Flag of Afghanistan (1928–1929).svg|40px|border]]</td><td><code>Flag of Afghanistan (1928–1929).svg</code></td></tr> <tr><td><code>1929t</code></td><td align=center>[[Plik:Flag of Afghanistan (1929).svg|40px|border]]</td><td><code>Flag of Afghanistan (1929).svg</code></td></tr> <tr><td><code>1929</code></td><td align=center>[[Plik:Flag of Afghanistan (1929–1931).svg|40px|border]]</td><td><code>Flag of Afghanistan (1929–1931).svg</code></td></tr> <tr><td><code>1931</code></td><td align=center>[[Plik:Flag of Afghanistan (1931–1973).svg|40px|border]]</td><td><code>Flag of Afghanistan (1931–1973).svg</code></td></tr> <tr><td><code>1973</code></td><td align=center>[[Plik:Flag of Afghanistan (1973–1974).svg|40px|border]]</td><td><code>Flag of Afghanistan (1973–1974).svg</code></td></tr> <tr><td><code>1974</code></td><td align=center> </td><td><code>Flag of Afghanistan (1974–1978).svg</code></td></tr> <tr><td><code>1978t</code></td><td align=center>[[Plik:Flag of Afghanistan (1978).svg|40px|border]]</td><td><code>Flag of Afghanistan (1978).svg</code></td></tr> <tr><td><code>1978</code></td><td align=center>[[Plik:Flag of Afghanistan (1978-1980).svg|40px|border]]</td><td><code>Flag of Afghanistan (1978-1980).svg</code></td></tr> <tr><td><code>1980</code></td><td align=center>[[Plik:Flag of Afghanistan (1980-1987).svg|40px|border]]</td><td><code>Flag of Afghanistan (1980-1987).svg</code></td></tr> <tr><td><code>1987</code></td><td align=center> </td><td><code>Flag of Afghanistan (1987–1992).svg</code></td></tr> <tr><td><code>1992t</code></td><td align=center>[[Plik:Flag of Afghanistan (1992).svg|40px|border]]</td><td><code>Flag of Afghanistan (1992).svg</code></td></tr> <tr><td><code>1992</code></td><td align=center>[[Plik:Flag of Afghanistan (1992-1996; 2001).svg|40px|border]]</td><td><code>Flag of Afghanistan (1992-1996; 2001).svg</code></td></tr> <tr><td><code>1996</code></td><td align=center>[[Plik:Flag of Taliban (original).svg|40px|border]]</td><td><code>Flag of Taliban (original).svg</code></td></tr> <tr><td><code>1997</code></td><td align=center>[[Plik:Flag of Taliban.svg|40px|border]]</td><td><code>Flag of Taliban.svg</code></td></tr> <tr><td><code>2001</code></td><td align=center>[[Plik:Flag of Afghanistan (2001-2002).svg|40px|border]]</td><td><code>Flag of Afghanistan (2001-2002).svg</code></td></tr> <tr><td><code>2002</code></td><td align=center>[[Plik:Flag of Afghanistan (2002-2004).svg|40px|border]]</td><td><code>Flag of Afghanistan (2002-2004).svg</code></td></tr> </table> Ich wywołania wyglądają następująco: * {{s|flaga|AFG|1880}} → {{flaga|AFG|1880}} * {{s|państwo|AFG|1880}} → {{państwo|AFG|1880}} * {{s|flaga|AFG|1901}} → {{flaga|AFG|1901}} * {{s|państwo|AFG|1901}} → {{państwo|AFG|1901}} * {{s|flaga|AFG|1919}} → {{flaga|AFG|1919}} * {{s|państwo|AFG|1919}} → {{państwo|AFG|1919}} * {{s|flaga|AFG|1921}} → {{flaga|AFG|1921}} * {{s|państwo|AFG|1921}} → {{państwo|AFG|1921}} * {{s|flaga|AFG|1926}} → {{flaga|AFG|1926}} * {{s|państwo|AFG|1926}} → {{państwo|AFG|1926}} * {{s|flaga|AFG|1928t}} → {{flaga|AFG|1928t}} * {{s|państwo|AFG|1928t}} → {{państwo|AFG|1928t}} * {{s|flaga|AFG|1928}} → {{flaga|AFG|1928}} * {{s|państwo|AFG|1928}} → {{państwo|AFG|1928}} * {{s|flaga|AFG|1929t}} → {{flaga|AFG|1929t}} * {{s|państwo|AFG|1929t}} → {{państwo|AFG|1929t}} * {{s|flaga|AFG|1929}} → {{flaga|AFG|1929}} * {{s|państwo|AFG|1929}} → {{państwo|AFG|1929}} * {{s|flaga|AFG|1931}} → {{flaga|AFG|1931}} * {{s|państwo|AFG|1931}} → {{państwo|AFG|1931}} * {{s|flaga|AFG|1973}} → {{flaga|AFG|1973}} * {{s|państwo|AFG|1973}} → {{państwo|AFG|1973}} * {{s|flaga|AFG|1974}} → {{flaga|AFG|1974}} * {{s|państwo|AFG|1974}} → {{państwo|AFG|1974}} * {{s|flaga|AFG|1978t}} → {{flaga|AFG|1978t}} * {{s|państwo|AFG|1978t}} → {{państwo|AFG|1978t}} * {{s|flaga|AFG|1978}} → {{flaga|AFG|1978}} * {{s|państwo|AFG|1978}} → {{państwo|AFG|1978}} * {{s|flaga|AFG|1980}} → {{flaga|AFG|1980}} * {{s|państwo|AFG|1980}} → {{państwo|AFG|1980}} * {{s|flaga|AFG|1987}} → {{flaga|AFG|1987}} * {{s|państwo|AFG|1987}} → {{państwo|AFG|1987}} * {{s|flaga|AFG|1992t}} → {{flaga|AFG|1992t}} * {{s|państwo|AFG|1992t}} → {{państwo|AFG|1992t}} * {{s|flaga|AFG|1992}} → {{flaga|AFG|1992}} * {{s|państwo|AFG|1992}} → {{państwo|AFG|1992}} * {{s|flaga|AFG|1996}} → {{flaga|AFG|1996}} * {{s|państwo|AFG|1996}} → {{państwo|AFG|1996}} * {{s|flaga|AFG|1997}} → {{flaga|AFG|1997}} * {{s|państwo|AFG|1997}} → {{państwo|AFG|1997}} * {{s|flaga|AFG|2001}} → {{flaga|AFG|2001}} * {{s|państwo|AFG|2001}} → {{państwo|AFG|2001}} * {{s|flaga|AFG|2002}} → {{flaga|AFG|2002}} * {{s|państwo|AFG|2002}} → {{państwo|AFG|2002}} 5h2xiubmfp4ju9kvue8exscozfkl7uk 551661 551607 2026-08-12T20:56:54Z Persino 2851 551661 wikitext text/x-wiki {{Podstrona dokumentacji}} == Kompletna lista flag == Podstawowa dokumentacja szablonu nie umożliwia podania takiego zestawienia, więc zostało ono umieszczone w rozszerzonej dokumentacji szablonu. Szablon zawiera dodatkowo flagi: <table class="wikitable"> <tr><th>nazwa</th><th>Obraz flagi (40px)</th><th>Nazwa pliku z flagą</th></tr> <tr><td><code>1880</code></td><td align=center>[[Plik:Flag of Afghanistan (1880–1901).svg|40px|border]]</td><td><code>Flag of Afghanistan (1880–1901).svg</code></td></tr> <tr><td><code>1901</code></td><td align=center>[[Plik:Flag of Afghanistan (1901–1919).svg|40px|border]]</td><td><code>Flag of Afghanistan (1901–1919).svg</code></td></tr> <tr><td><code>1919</code></td><td align=center>[[Plik:Flag of Afghanistan (1909–1926).svg|40px|border]]</td><td><code>Flag of Afghanistan (1909–1926).svg</code></td></tr> <tr><td><code>1921</code></td><td align=center>[[Plik:Flag of Afghanistan (1921–1926).svg|40px|border]]</td><td><code>Flag of Afghanistan (1921–1926).svg</code></td></tr> <tr><td><code>1926</code></td><td align=center>[[Plik:Flag of Afghanistan (1926–1928).svg|40px|border]]</td><td><code>Flag of Afghanistan (1926–1928).svg</code></td></tr> <tr><td><code>1928t</code></td><td align=center>[[Plik:Flag of Afghanistan (1928).svg|40px|border]]</td><td><code>Flag of Afghanistan (1928).svg</code></td></tr> <tr><td><code>1928</code></td><td align=center>[[Plik:Flag of Afghanistan (1928–1929).svg|40px|border]]</td><td><code>Flag of Afghanistan (1928–1929).svg</code></td></tr> <tr><td><code>1929t</code></td><td align=center>[[Plik:Flag of Afghanistan (1929).svg|40px|border]]</td><td><code>Flag of Afghanistan (1929).svg</code></td></tr> <tr><td><code>1929</code></td><td align=center>[[Plik:Flag of Afghanistan (1929–1931).svg|40px|border]]</td><td><code>Flag of Afghanistan (1929–1931).svg</code></td></tr> <tr><td><code>1931</code></td><td align=center>[[Plik:Flag of Afghanistan (1931–1973).svg|40px|border]]</td><td><code>Flag of Afghanistan (1931–1973).svg</code></td></tr> <tr><td><code>1973</code></td><td align=center>[[Plik:Flag of Afghanistan (1973–1974).svg|40px|border]]</td><td><code>Flag of Afghanistan (1973–1974).svg</code></td></tr> <tr><td><code>1974</code></td><td align=center> </td><td><code>Flag of Afghanistan (1974–1978).svg</code></td></tr> <tr><td><code>1978t</code></td><td align=center>[[Plik:Flag of Afghanistan (1978).svg|40px|border]]</td><td><code>Flag of Afghanistan (1978).svg</code></td></tr> <tr><td><code>1978</code></td><td align=center>[[Plik:Flag of Afghanistan (1978-1980).svg|40px|border]]</td><td><code>Flag of Afghanistan (1978-1980).svg</code></td></tr> <tr><td><code>1980</code></td><td align=center>[[Plik:Flag of Afghanistan (1980-1987).svg|40px|border]]</td><td><code>Flag of Afghanistan (1980-1987).svg</code></td></tr> <tr><td><code>1987</code></td><td align=center> </td><td><code>Flag of Afghanistan (1987–1992).svg</code></td></tr> <tr><td><code>1992t</code></td><td align=center>[[Plik:Flag of Afghanistan (1992).svg|40px|border]]</td><td><code>Flag of Afghanistan (1992).svg</code></td></tr> <tr><td><code>1992</code></td><td align=center>[[Plik:Flag of Afghanistan (1992-1996; 2001).svg|40px|border]]</td><td><code>Flag of Afghanistan (1992-1996; 2001).svg</code></td></tr> <tr><td><code>1996</code></td><td align=center>[[Plik:Flag of Taliban (original).svg|40px|border]]</td><td><code>Flag of Taliban (original).svg</code></td></tr> <tr><td><code>1997</code></td><td align=center>[[Plik:Flag of Taliban.svg|40px|border]]</td><td><code>Flag of Taliban.svg</code></td></tr> <tr><td><code>2001</code></td><td align=center>[[Plik:Flag of Afghanistan (2001-2002).svg|40px|border]]</td><td><code>Flag of Afghanistan (2001-2002).svg</code></td></tr> <tr><td><code>2002</code></td><td align=center>[[Plik:Flag of Afghanistan (2002-2004).svg|40px|border]]</td><td><code>Flag of Afghanistan (2002-2004).svg</code></td></tr> </table> Ich wywołania wyglądają następująco: * {{s|flaga|AFG|1880}} → {{flaga|AFG|1880}} * {{s|państwo|AFG|1880}} → {{państwo|AFG|1880}} * {{s|flaga|AFG|1901}} → {{flaga|AFG|1901}} * {{s|państwo|AFG|1901}} → {{państwo|AFG|1901}} * {{s|flaga|AFG|1919}} → {{flaga|AFG|1919}} * {{s|państwo|AFG|1919}} → {{państwo|AFG|1919}} * {{s|flaga|AFG|1921}} → {{flaga|AFG|1921}} * {{s|państwo|AFG|1921}} → {{państwo|AFG|1921}} * {{s|flaga|AFG|1926}} → {{flaga|AFG|1926}} * {{s|państwo|AFG|1926}} → {{państwo|AFG|1926}} * {{s|flaga|AFG|1928t}} → {{flaga|AFG|1928t}} * {{s|państwo|AFG|1928t}} → {{państwo|AFG|1928t}} * {{s|flaga|AFG|1928}} → {{flaga|AFG|1928}} * {{s|państwo|AFG|1928}} → {{państwo|AFG|1928}} * {{s|flaga|AFG|1929t}} → {{flaga|AFG|1929t}} * {{s|państwo|AFG|1929t}} → {{państwo|AFG|1929t}} * {{s|flaga|AFG|1929}} → {{flaga|AFG|1929}} * {{s|państwo|AFG|1929}} → {{państwo|AFG|1929}} * {{s|flaga|AFG|1931}} → {{flaga|AFG|1931}} * {{s|państwo|AFG|1931}} → {{państwo|AFG|1931}} * {{s|flaga|AFG|1973}} → {{flaga|AFG|1973}} * {{s|państwo|AFG|1973}} → {{państwo|AFG|1973}} * {{s|flaga|AFG|1974}} → {{flaga|AFG|1974}} * {{s|państwo|AFG|1974}} → {{państwo|AFG|1974}} * {{s|flaga|AFG|1978t}} → {{flaga|AFG|1978t}} * {{s|państwo|AFG|1978t}} → {{państwo|AFG|1978t}} * {{s|flaga|AFG|1978}} → {{flaga|AFG|1978}} * {{s|państwo|AFG|1978}} → {{państwo|AFG|1978}} * {{s|flaga|AFG|1980}} → {{flaga|AFG|1980}} * {{s|państwo|AFG|1980}} → {{państwo|AFG|1980}} * {{s|flaga|AFG|1987}} → {{flaga|AFG|1987}} * {{s|państwo|AFG|1987}} → {{państwo|AFG|1987}} * {{s|flaga|AFG|1992t}} → {{flaga|AFG|1992t}} * {{s|państwo|AFG|1992t}} → {{państwo|AFG|1992t}} * {{s|flaga|AFG|1992}} → {{flaga|AFG|1992}} * {{s|państwo|AFG|1992}} → {{państwo|AFG|1992}} * {{s|flaga|AFG|1996}} → {{flaga|AFG|1996}} * {{s|państwo|AFG|1996}} → {{państwo|AFG|1996}} * {{s|flaga|AFG|1997}} → {{flaga|AFG|1997}} * {{s|państwo|AFG|1997}} → {{państwo|AFG|1997}} * {{s|flaga|AFG|2001}} → {{flaga|AFG|2001}} * {{s|państwo|AFG|2001}} → {{państwo|AFG|2001}} * {{s|flaga|AFG|2002}} → {{flaga|AFG|2002}} * {{s|państwo|AFG|2002}} → {{państwo|AFG|2002}} dsmzoj5xmk74of2o4wxjp6bky3pg2be Moduł:Szablonowe 828 58954 551662 550967 2026-08-12T22:09:06Z Persino 2851 551662 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; trbgg7w7nlufytj1ha2i13pjy6yn1yq 551663 551662 2026-08-12T22:17:11Z Persino 2851 551663 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 23f2egrejjtdbnqql36o3irx6trkzwp 551664 551663 2026-08-12T22:21:51Z Persino 2851 551664 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 40jw9fg59kirujs88z0w54kjlanglkj 551665 551664 2026-08-12T22:40:33Z Persino 2851 551665 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.PobierzGeneralnaTablica=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.PobierzGeneralnaTablica(t) end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 4dheh235ey02mtilxxmtr55znokejpo 551666 551665 2026-08-12T23:42:06Z Persino 2851 551666 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.PobierzGeneralnaTablica=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.PobierzGeneralnaTablica(t) end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; g256s2s45gxpfbhagsecrb7eiw74oky 551667 551666 2026-08-13T01:23:00Z Persino 2851 551667 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.PobierzGeneralnaTablica=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.PobierzGeneralnaTablica(t) end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; cor8ibfx65bkdpc1hsh3hzrdyw1duhg 551670 551667 2026-08-13T01:46:20Z Persino 2851 551670 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.PobierzGeneralnaTablica=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.PobierzGeneralnaTablica(t) end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; g256s2s45gxpfbhagsecrb7eiw74oky 551673 551670 2026-08-13T01:52:30Z Persino 2851 551673 Scribunto text/plain local p={}; --zamykanie local znak_127=mw.loadData("Module:Html/dane").znak_127; function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu) local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127; return wzor; end; function p.NormaKoduKodowaniaTekstu(kod,numer) local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127; return wikikodnumer; end; function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu) local wzor=znak_127.."&#0*39;&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;&#0*39;"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer) local wzor=znak_127.."&#039;&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;&#039;"..znak_127; return wzor; end; function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu) local wzor=znak_127.."'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'"..znak_127; return wzor; end; function p.NormaKoduZakodowanegoWikiTekstu(kod,numer) local wikikodnumer=znak_127.."'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'"..znak_127; return wikikodnumer; end; function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu) local wzor="%%7F'&quot;`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`&quot;'%%7F"; return wzor; end; function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer) local wikikodnumer="%7F'&quot;`UNIQ--"..kod.."-"..numer.."-QINU`&quot;'%7F"; return wikikodnumer; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY); end; function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu) local licznik=0; local tablica_analizy_obiektow_strony_dany_modul={}; tablica_analizy_obiektow_strony_dany_modul["MATH"]={}; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon) licznik=licznik+1; tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon; return p.NormaKoduKodowaniaTekstu("MATH",licznik); end) return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul; end; function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt) local parametry_modul=require("Module:Parametry"); local __max=0; for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do if(parametry_modul.TypeNumber(numer))then __max=math.max(__max,numer); end; end; return __max+1; end; function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local numer_szablonu={}; local szablonowe_dane_modul=require("Module:Szablonowe/dane"); for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt); end; return numer_szablonu; end; function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu() local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji; end; function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun) local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu(); for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do for kod,wartosc in pairs(tab_obiekt)do local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica(); local tab_wartosc=tablica[kod]; if(tab_wartosc)then if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then if(tab_wartosc[2])then for obiekt_tab,tab_kod in pairs(tab_analiza)do if(obiekt_tab==obiekt)then for _,liczba in ipairs(tab_kod)do local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba]; if(tab_liczba)then tab_liczba[kod]=nil; tab_wartosc[2]=false; end; end; end; end; end; else tablica[kod]=nil; end; end; end; end; end; function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4) if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end; local czy_jedno=false; ---- local parametry_modul=require("Module:Parametry"); ---- local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare) local iter=true;local iter_fun; if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then iter_fun=function() local iter=function() return nil; end; return iter; end; else iter_fun=function() if((not obiekt)and(not kod))then local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu()); return iter; else local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil; local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu; if((not szablon)or(szablon==""))then local iter=function() return nil; end; return iter; else local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); return iter; end; end; end; end; local tak=nil; local iter2=nil; poziom_iteracji=poziom_iteracji or 0; local function Iterator() local function IterMain() local obiekt,kod; ---- repeat if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end; obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon); if(__FUNKCJA2)then repeat local czy_dalej=nil; local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); if(not jest_naglowek)then --if(poziom_iteracji>0)then -- return nil; --else repeat obiekt,kod=iter(); if((not obiekt)or(not kod))then return nil;end; kod=tonumber(kod); local tak_repeat=false; if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then tak_repeat=true; end; until (not tak_repeat); ---- szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_dalej=true; --end; end; until (not czy_dalej); end; ---- tak=true; if(__FUNKCJA)then local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu); if(not wynik)then czy_jedno=true; return nil; else szablon=wynik; if(tekst)then tekst_rozwiniety_calego_artykulu=tekst; end; end; end; iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE")); return szablon,obiekt,kod,poziom_iteracji; end; if(not tak)then local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else local szablon,obiekt,kod,poziom_iteracji=iter2(); if(czy_jedno)then return nil;end; if((not szablon)or(not kod)or(not obiekt))then tak=nil; local szablon,obiekt,kod,poziom_iteracji=IterMain(); if(czy_jedno)then return nil;end; return szablon,obiekt,kod,poziom_iteracji; else return szablon,obiekt,kod,poziom_iteracji; end; end; end; return Iterator; end; return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul; end; function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local tab_usun={}; local szablon2=nil; local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji) local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end; local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod])); local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or (tak and __SZABLON(obiekt,kod) or szablon2); return szablon; end); local poziom_iteracji_poprz=-1; local tab_dane=nil; for szablon,obiekt,kod,poziom_iteracji in iterator do if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end; szablon2=nil;local wynik; if(__funkcja1)then local analiza; szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if((analiza)and(__funkcja7))then local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; ---- local funkcja_temp;local tak_specjalne=false; if(tab_dane)then ---- local tak=true; local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])); if(not tak)then local Typ=function() return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; if(not funkcja_temp)then funkcja_temp=Typ;end; local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8); if(czy_funkcja_jako_funkcja8 and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) )then tak_specjalne=true; end; break; end; end; end; end; if(tak_specjalne)then wynik=true;end; if(funkcja_temp)then funkcja_temp();end; else local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2); if(czy_szablon_funkcyjny)then szablon2=szablon2();end; end; end; if(not wynik)then szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon); if((not tab_dane)or(#tab_dane==0))then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local tak=true;local tab_wolne; for i=#tab_dane,1,-1 do local tab_pos=tab_dane[i]; local poziom_iteracji_temp=tab_pos[4]; if(poziom_iteracji_temp<poziom_iteracji)then local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3]; tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]))); if(not tak)then tab_wolne=tab_pos; break; end; end; end; if(tak)then tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; else local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3]; local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]; tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon); tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst; if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true; end; end; -- parametry kodow local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; -- bazowanie kodow local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; -- funkcje koncowe local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil; if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; if(not tab_dane)then tab_dane={};end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_dane); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_dane); end; table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji}); if(__funkcja2)then local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end; end; poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6) local techniczne_modul=require("Module:Techniczne"); local parametry_modul=require("Module:Parametry"); local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={}; for szablon,obiekt,kod,poziom_iteracji in iterator do local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul); tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul; local function ModyfikacjaBazyKodowoSzablonowaDziecka() if(dziecko_zmodyfikowane)then if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt; local __kod_zmodyfikowany=kod_zmodyfikowany or kod; if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={}; end; tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane; local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil; local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; else tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane; local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil; end; end; end; local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany) local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica; local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica; tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany; local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil; if(not __tablica_analizy_obiektow_strony_dany_modul)then if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then if( ((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica)) or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica)) )then tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil; local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil; end; end; end; end; if(kod_kodowy_wynik)then if(poziom_iteracji>0)then if(not szablon_rodzica_zmodyfikowany)then if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]; szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; else ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); ModyfikacjaBazyKodowoSzablonowaDziecka(); end; else if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then local ile; tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik)); if(ile>0)then ModyfikacjaBazyKodowoSzablonowaDziecka(); end; end; end; elseif(szablon_rodzica_zmodyfikowany)then if(poziom_iteracji>0)then ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany); else tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany; end; ModyfikacjaBazyKodowoSzablonowaDziecka(); else ModyfikacjaBazyKodowoSzablonowaDziecka(); end; return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul; end; if(poziom_iteracji==0)then ZamienianieKodowe(nil,nil,nil,nil,nil); else for i=#tab_poziom_obiekt,1,-1 do local tab=tab_poziom_obiekt[i]; local poziom_iteracji_rodzica=tab[4]; if(poziom_iteracji_rodzica<poziom_iteracji)then local szablon_rodzica=tab[1]; local obiekt_rodzica=tab[2]; local kod_rodzica=tab[3]; local szablon_rodzica_zmodyfikowany=tab[5]; local obiekt_rodzica_zmodyfikowany=tab[6]; local kod_rodzica_zmodyfikowany=tab[7]; local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica); if(szablon_rodzica_zmodyfikowany)then tab[5]=szablon_rodzica_zmodyfikowany; tab[6]=obiekt_rodzica_zmodyfikowany; tab[7]=kod_rodzica_zmodyfikowany; end; break; end; end; end; if(poziom_iteracji_poprz>poziom_iteracji)then for i=poziom_iteracji_poprz,poziom_iteracji,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji)then elseif(poziom_iteracji_poprz==poziom_iteracji)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,}); poziom_iteracji_poprz=poziom_iteracji; end; return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5) local tablica_szablonow_z_naglowkami=nil; local tab_sam; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(poziom_iteracji==0)then tablica_szablonow_z_naglowkami=nil; tab_sam=nil; else if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; end; ---- local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(wynik)then if(sam_obiekt and sam_kod)then return false; end; end local czy_nie_wyzej_sam=false; local czy_nie_wyzej_poziom=nil; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod) if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then return ""; end; end); local poziom_iteracji_poprz=-1; local tab_poziom_obiekt={} if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end; for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then if(poziom_iteracji_poprz>poziom_iteracji2)then for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do table.remove(tab_poziom_obiekt); end; --elseif(poziom_iteracji_poprz<poziom_iteracji2)then elseif(poziom_iteracji_poprz==poziom_iteracji2)then table.remove(tab_poziom_obiekt); end; table.insert(tab_poziom_obiekt,{obiekt2,kod2}); poziom_iteracji_poprz=poziom_iteracji2; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else for _,tab in ipairs(tab_poziom_obiekt)do if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end; tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true; end; if(sam_obiekt and sam_kod)then if(not tab_sam)then tab_sam={};end; if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end; tab_sam[sam_obiekt][sam_kod]=true; czy_nie_wyzej_sam=true; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=false; end; else if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end; if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end; tablica_szablonow_z_naglowkami[obiekt2][kod2]=true; czy_nie_wyzej_sam=false; if(czy_inne_ustawienia)then czy_nie_wyzej_poziom=true; end; end; ---poziom_iteracji_poprz=poziom_iteracji2; end; end; if(wynik)then return true;end; if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end; if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end; return nil; end,__funkcja4,__funkcja5); return tekst_rozwiniety_calego_artykulu; end; function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3) local tablica_szablonow_z_naglowkami=nil; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not wynik)then return nil;end; return true; end); return tekst_rozwiniety_calego_artykulu; end; local function FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local techniczne_modul=require("Module:Techniczne"); local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu; local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst"); local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); return tekst; end; local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end; if(__FUNKCJA)then local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return;end; end; local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA2)then local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return; end; end; if((czy_niekodowane)and(__FUNKCJA3))then local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(wynik)then return wynik; end; end; local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); local tekst; if((not czy_niekodowane)and(__FUNKCJA3))then tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow); if(not tekst)then tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; else tekst=FunkcjaPobieraniaTekstuSzablonuStrony(pelna_nazwa_szablonu,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end; if(not tekst)then return;end; if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end; local html_modul=require("Module:Html"); tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst) if(czy_nie_brak_parametrow)then if(obiekt=="ZMIENNA")then local zmienna;local wartosc_domyslna; zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$"); if(not zmienna)then zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$"); end; zmienna=mw.text.trim(zmienna); local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna]; if(not wartosc_zmiennej)then if(wartosc_domyslna)then return wartosc_domyslna;end; local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon); return szablon; end; return wartosc_zmiennej; end; end; end, function() return numer_szablonu; end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow) return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) end, function(nazwa_szablonu,tabela_modyfikatorow,rezultat) return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu; end,false); end; end; function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu) local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self); tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {}; local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow; ---- tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {}; local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu]; return tablica_danych_parametrow_szablonu_strony; end; function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) if(not tablica_analizy_obiektow_strony_dany_modul)then if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]; end; --- local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca); return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony; end; function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod) return; end, function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu) ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; --- return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY); return tekst_rozwiniety_calego_artykulu; end; function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY) local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- local nazwy_modul=require("Module:Nazwy"); local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)==""); local tab_usun; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst) if(obiekt=="SZABLON")then local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); ---- szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon; ---- local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY); if(wynik)then return wynik;end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu,tab_usun; end; p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2) local html_modul=require("Module:Html"); nazwa=html_modul.DecodeHtml(nazwa,true); local rezultat=nil; if(__FUNKCJA)then local nazwa_rozwinieta; nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa); nazwa=nazwa_rozwinieta or nazwa; end; local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa); nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa; if(not tabela_modyfikatorow)then nazwa=html_modul.EncodeId(nazwa); return nazwa; end; local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa); if(nazwa_przestrzeni)then if(nazwa_przestrzeni=="")then if(tabela_modyfikatorow["#invoke:"])then nazwa="Module:"..nazwa; elseif(tabela_modyfikatorow["int:"])then nazwa="MediaWiki:"..nazwa; end; else local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then nazwa="Module:"..nazwa; elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then nazwa="MediaWiki:"..nazwa; end; end; end; nazwa=html_modul.EncodeId(nazwa); return nazwa,tabela_modyfikatorow; end; p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony; end; end; end; if(not czy_szablon)then return;end; local nazwy_modul=require("Module:Nazwy"); local parametry_modul=require("Module:Parametry"); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw); local nazwa_szablonu; if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]"); if((czy_nie_dwukropek)or(czy_szablon==""))then local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",}; nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon; else nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw); else nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu; end; return nazwa_szablonu; end; p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony; end; end; end; local parametry_modul=require("Module:Parametry"); ---- local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa"); ---- if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); ---- local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw); local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]"); if(czy_nie_dwukropek)then local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",}; pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu); else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; else pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw); end; if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu; end; return pelna_nazwa_szablonu; end; p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu) if(not nazwa_szablonu)then return;end; local nazwy_modul=require("Module:Nazwy"); local tabela_nazw={}; local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); local klucz_przestrzeni_niekanoniczna; local wiki_modul=require("Module:Wiki"); local czy_biezaca; if(tabela_nazw.czy_aktualna_wiki==nil)then czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}; else czy_biezaca=tabela_nazw.czy_aktualna_wiki; end; if(czy_biezaca)then klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,}; else klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,}; end; local pelna_nazwa_szablonu; local nazwy_np_modul=mw.loadData("Module:Nazwy/Np"); if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu; else pelna_nazwa_szablonu=nazwa_szablonu; end; local tabela_nazw={}; pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw); return pelna_nazwa_szablonu; end; p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami; end; end; end; local czy_z_parametrami; local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$"); if(not czy_szablon or not zawartosc)then czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$"); if(not czy_szablon)then return;end; czy_z_parametrami=false; else czy_z_parametrami=true; end; --czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon; local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2); local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami; end; return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami; end; function p.TablicaTransportuSzablonowe(self) return self; end; local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua) if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then local czy_parser=czy_ramka_lua and czy_ramka_lua[3]; local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$"); if(kawalek_wywolania_element_nienazwany)then ---- local __metatablica=getmetatable(tworzona_tabela); local len=__metatablica.__len(tworzona_tabela); ---- tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,}; return tworzona_tabela; else --- local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$"); if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; else tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc); return tworzona_tabela; end; else return nil; end; end; else tworzona_tabela[true]=kawalek_wywolania; czy_ramka_lua[2]=true; return tworzona_tabela; end; return nil; end; local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua) local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$"); if(not kawalek_wywolania)then kawalek_wywolania=parametry_wywolania_szablonu; end; if(not dalszy_kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return parametry_szablonu; end; if(kawalek_wywolania)then ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua); return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua); end; return nil; end; p.MetaTabelkaParsowanieSzablonu=function(__metatablica) local parametry_modul=require("Module:Parametry"); local i=1; local tablica={}; __metatablica.PobierzGeneralnaTablica=function(t) return tablica; end; __metatablica.__len=function(t) return #tablica; end; __metatablica.__index=function(t,klucz) local tab=tablica[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.index=function(t,klucz) return tablica[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local tab=tablica[klucz]; if(not tab)then if(parametry_modul.TypeTable(wartosc))then tablica[klucz]={wartosc[1],i,wartosc[2],}; else tablica[klucz]={wartosc,i,}; end; i=i+1; else if(parametry_modul.TypeTable(wartosc))then tab[1]=wartosc[1]; tab[3]=wartosc[2]; else tab[1]=wartosc; end; end; else local tab=tablica[klucz]; if(tab~=nil)then local i=tab[2]; tablica[klucz]=nil; ---- for name,value in pairs(tablica)do local i2=value[2]; if(i2>i)then value[2]=value[2]-1; end; end; end; end; end; __metatablica.newindex=function(t,klucz,wartosc) tablica[klucz]=wartosc; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,tablica,nil; end; local function iter_ipairs(tablica,i) i=i+1; local tab = tablica[i]; if tab then return i, tab[1]; end end; __metatablica.__ipairs=function(t) return iter_ipairs,tablica,0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value); local __metatablica2={}; p.MetaTabelkaParsowanieSzablonu(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; p.MetaTabelkaParsowanieObiektowe=function(__metatablica,funkcja) local tabela_obiektu; local tak=false; local function Inicjacja_tabeli() if(not tak)then tabela_obiektu=funkcja(); tak=true; end; end; __metatablica.PobierzGeneralnaTablica=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.PobierzGeneralnaTablica(t) end; __metatablica.__index=function(t,klucz) Inicjacja_tabeli(); return tabela_obiektu[klucz]; end; __metatablica.__newindex=function(t,klucz,wartosc) Inicjacja_tabeli(); tabela_obiektu[klucz]=wartosc; end; __metatablica.__len=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); local len=__metatablica2.__len(tabela_obiektu); return len; end; __metatablica.__ipairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__ipairs(tabela_obiektu); end; __metatablica.__pairs=function(t) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); return __metatablica2.__pairs(tabela_obiektu); end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) Inicjacja_tabeli(); local __metatablica2=getmetatable(tabela_obiektu); __metatablica2.KopiujMetaTabela(value,funkcja,funkcja2); end; end; p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod) local nazwa_parsowania=nil;local modyfikatory_parsowania=nil; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow; end; end; end; end; ---- local function NazwaSzablonu(nazwa_szablonu) if((not nazwa_parsowania)or(not modyfikatory_parsowania))then local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2); nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna); return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna; else return nazwa_parsowania,modyfikatory_parsowania; end; end; local ParseryTagLua=function(tabela_modyfikatorow) local czy_lua; local czy_parser; if(tabela_modyfikatorow)then czy_lua=tabela_modyfikatorow["#invoke:"]; if(not czy_lua)then for name,value in pairs(tabela_modyfikatorow)do local hash=mw.ustring.sub(name,1,1); if((hash)and(hash=="#"))then czy_parser=true; break; end; end; end; end; local czy_ramka_lua={czy_lua,false,czy_parser,}; return czy_ramka_lua; end; local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$"); if(not wywolanie_bez_parametrow)then local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$"); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$"); ---- local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow); ---- tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua); return tabela_parametrow_szablonu; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; else local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$")); if(nazwa_szablonu)then local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu); ---- local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tabela_parametrow_szablonu={}; setmetatable(tabela_parametrow_szablonu,__metatablica); ---- if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1]; tablica_danych_parametrow_szablonu_strony_numer[kod]={}; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu; tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow; end; ---- return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow; else return nil;end; end; end; function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy) local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory; local modyfikatory=""; local tab_mod=nil; if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then return pole_nazwy,modyfikatory,tab_mod; end; ---- local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe; ---- local function PojedynczeModyfikatory(pole,modyfikatory) for modyfikator,tab in pairs(tab_modyfikatory) do local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$"); if(modyfikator_uzyty)then if(not tab_mod)then tab_mod={};end; if(not tab_mod[modyfikator])then tab_mod[modyfikator]=true; end; modyfikatory=modyfikatory..modyfikator_uzyty; return PojedynczeModyfikatory(pole_dalej,modyfikatory) end; end; return pole,modyfikatory; end; local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory); return pole_ostateczne,modyfikatory_ostateczne,tab_mod; end; function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#switch:"]) )then return true; end; end; end; function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu) if(tabela_modyfikatorow)then if((tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#tag:"]) )then return true; end; end; end; function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod) if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon; end; end; end; local function RozpatrywanieSzablonowe() if(tabela_modyfikatorow)then if((tabela_modyfikatorow["int:"]) or(tabela_modyfikatorow["#if:"]) or(tabela_modyfikatorow["#ifeq:"]) or(tabela_modyfikatorow["#ifexpr:"]) or(tabela_modyfikatorow["#expr:"]) or(tabela_modyfikatorow["#iferror:"]) or(tabela_modyfikatorow["#ifexist:"]) or(tabela_modyfikatorow["#tag:"]) or(tabela_modyfikatorow["#switch:"]) or(tabela_modyfikatorow["#property:"]) or(tabela_modyfikatorow["#invoke:"]) or(tabela_modyfikatorow["gender:"]) or (tabela_modyfikatorow["ucfirst:"]) or (tabela_modyfikatorow["lcfirst:"]) or (tabela_modyfikatorow["uc:"]) or (tabela_modyfikatorow["lc:"]) )then return false; end; end; if((nazwa_szablonu)and(nazwa_szablonu~=""))then local parametry_modul=require("Module:Parametry"); if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end; if(tabela_parametrow_szablonu)then local parametry_modul=require("Module:Parametry"); local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu); if(czy_nie_brak_parametrow)then return true;end; end; return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false); end; return true; end; local wynik=RozpatrywanieSzablonowe(); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik; end; return wynik; end; function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane) local parametry_modul=require("Module:Parametry"); local tablica_obiektow_strony_danych_kodow_specjalnych_modul={}; local tab_grupa={}; local math_numer=0;local licznik_linkz=1; local function TempFuncGrupa(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]); end; tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); end; end; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); end; elseif(obiekt=="MATH")then math_numer=math_numer+1; ---- if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end; if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end; ---- return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer); end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; return szablon; end); return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul; end; function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE) local parametry_modul=require("Module:parametry"); local tab_grupa={};local licznik_linkz=1; local tab_usun; local TempFuncGrupa=function(grupa) tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1; ---- return "&#91;"..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."&#93;"; end; tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="SZABLON")then return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN")or(nazwa_szablonu=="RNota"))then local grupa=""; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN")or(nazwa_szablonu=="UNota"))then local grupa="uwaga"; return TempFuncGrupa(grupa); elseif((nazwa_szablonu=="O")or(nazwa_szablonu=="Ref"))then local grupa=tabela_parametrow_szablonu[3] or tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); elseif(nazwa_szablonu=="Refn")then local grupa=tabela_parametrow_szablonu["grupa"] or tabela_parametrow_szablonu["g"] or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(nazwa=="ref")then tab_atrybuty=tab_atrybuty or {}; local grupa=tab_atrybuty["group"]; grupa=parametry_modul.TypeString(grupa) and grupa or ""; return TempFuncGrupa(grupa); else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; else if(__FUNKCJA_INNE_OPERACJE)then return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul); end; end; return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="LINKZ")then local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$") if(url)then local szablon="["..url.." &#91;"..licznik_linkz.."&#93;]"; tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon; licznik_linkz=licznik_linkz+1; return szablon; end; end; if(__FUNKCJA_INNE_OPERACJE2)then return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; return szablon; end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE); return tekst_rozwiniety_calego_artykulu,tab_usun; end; function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw) local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$"); if(adres)then return adres;end; return nil; end; function p.WalidacjaLinkuProjektowego(linkw) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz) local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$") if((adres)and(nazwa))then return adres,nazwa;end; local adres=mw.ustring.match(linkz,"^%[(.-)%]"); return adres; end; function p.WalidacjaLinkuNieProjektowego(linkz) local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz); if(not adres)then return nil;end; local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$"); if(spacje_adresu)then return nil;end; local adres_w_linii=mw.ustring.match(adres,"\n"); if(adres_w_linii)then return nil;end; local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$"); if(walidacja_adresu)then return nil;end; if(not nazwa)then return adres,nazwa;end; local nazwa_w_linii=mw.ustring.match(nazwa,"\n"); if(nazwa_w_linii)then return nil;end; local walidacja_nazwy=mw.ustring.match(nazwa,"%]"); if(walidacja_nazwy)then return nil;end; return adres,nazwa; end; function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul) local tablica_kodow={};local tak=false; local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki; for szablon,obiekt,kod in iterator do if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu()); for obiekt,kod in iter do if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end; tablica_kodow[obiekt][kod]=true; tak=true; end; end; end; --if(not tak)then return tekst_rozwiniety_calego_artykulu;end; local strony_modul=require("Module:Strony"); local specjalne_modul=require("Module:Specjalne"); --local frame=mw.getCurrentFrame(); tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2) if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); return szablon2; end; elseif(obiekt2=="LINKW")then if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete); if(czy_nie_linkw)then return szablon2; end; end; elseif(obiekt2=="LINKZ")then if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end; local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul); --szablon_rozwiniete=frame:preprocess(szablon_rozwiniete); local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete); if(adres)then local czy_linkz=strony_modul.SprawdzanieURL(adres); if(not czy_linkz)then return szablon2;end; else return szablon2; end; end; return nil,true; end); return tekst_rozwiniety_calego_artykulu; end; p["PokazanieWywołaniaSzablonu"]=function(szablon, args) local result = {}; table.insert(result, mw.text.nowiki("{{")); if mw.isSubsting() then table.insert(result, "subst:"); end; table.insert(result, szablon); if args then for k, v in pairs(args) do if (type(k)~="number")then table.insert(result, "|"); table.insert(result, tostring(k)); table.insert(result, "="); table.insert(result, mw.text.nowiki(v)); else table.insert(result, "|"); table.insert(result, mw.text.nowiki(v)); end; end; end; table.insert(result, mw.text.nowiki("}}")); return table.concat(result); end; function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony) local args=args or {}; local modyfikatory=modyfikatory or {}; ---- local __metatablica=getmetatable(args); local result={}; table.insert(result,((jako_szablony) and "{{((}}" or "{{")); for name,_ in pairs(modyfikatory)do table.insert(result,name); end; table.insert(result,nazwa); if(not __metatablica)then for name,value in pairs(args)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "=")); table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value); end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args); local tab_inna_tabelka={}; local funkcja; local juz_jest=nil; for name,value in pairs(tabelka_metatable)do if((juz_jest)or(name~=true))then tab_inna_tabelka[value[2]]={name,value[1],value[3],}; else funkcja=value; juz_jest=true; end; end; if(funkcja)then table.insert(result,((jako_szablony) and "{{!}}" or "|")); if(jako_szablony)then funkcja=mw.ustring.gsub(funkcja,"=",function(znak) return "{{=}}"; end); end; table.insert(result,funkcja); end; for _,value in ipairs(tab_inna_tabelka)do table.insert(result,((jako_szablony) and "{{!}}" or "|")); local value_2; if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end; table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2); end; end; table.insert(result,((jako_szablony) and "{{))}}" or "}}")); return table.concat(result,""); end; function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon) szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc) zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak) if(znak=="|")then return "{{!}}";else return "{{=}}";end; end); return "{((}}"..zawartosc.."{{))}}"; end); return szablon; end; function p.NazwaSzablonu(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local nazwa=PobierzParametr(1) or PobierzParametr("nazwa"); local nazwy_modul=require("Module:Nazwy"); local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa); local nazwy_np_modul=mw.loadData("Module:Nazwy/Np") if(nazwa_przestrzeni==nazwy_np_modul.Template)then return nazwy_modul["NAZWASTRONY"](nazwa); elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa); else return nazwy_modul["PEŁNANAZWASTRONY"](nazwa); end; end; function p.ZnacznikoweTrueFalseSzeregZnakowy(yes) local yes_male=mw.ustring.lower(yes); return ((yes_male=="true") and true or ((yes_male~="false")and yes or false)); end; local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu) local liczba_obiektu=liczba_obiektu or 100; if((tablica_danych_parametrow_szablonu_strony)and(kod))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(tablica_danych_parametrow_szablonu_strony_numer)then local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod)then return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika; end; end; end local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne"); if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul={}; znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul); end; local html_modul=require("Module:Html"); znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik); znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3"); local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$"); if((nazwa)and(zawartosc))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),zawartosc,nil; end; ---- local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$"); if(nazwa)then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return mw.ustring.lower(nazwa),nil,nil; end; ---- local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$"); ---- if((not nazwa)or(not atrybuty)or(not zawartosc))then nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$"); if((not nazwa)or(not atrybuty))then if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil; end; return nil,nil,nil; end; end; ----- local techniczne_modul=require("Module:Techniczne"); local function __FUNKCJA() local __metatablica={}; p.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); ---- local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul,tab_atrybuty); return tab_atrybuty; end; local __metatablica={}; p.MetaTabelkaParsowanieObiektowe(__metatablica,__FUNKCJA); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); if((tablica_danych_parametrow_szablonu_strony)and(kod))then if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu]; if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod]; tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa; tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc; tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty; end; return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty; end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107); end; function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod) return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108); end; function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony) local tab_str={}; table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,nazwa); if(atrybuty)then local __metatablica=getmetatable(atrybuty); if(not __metatablica)then local parametry_modul=require("Module:Parametry"); for name,value in pairs(atrybuty)do table.insert(tab_str," "); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(value))then table.insert(tab_str,"\""..value.."\""); else table.insert(tab_str,tostring(value)); end; end; else local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(atrybuty); local tab_inna_tabelka={}; for name,value in pairs(tabelka_metatable)do tab_inna_tabelka[value[2]]={name,value[1],}; end; for __name,tab_value in ipairs(tab_inna_tabelka)do table.insert(tab_str," "); table.insert(tab_str,tab_value[1]); table.insert(tab_str,jako_szablony and "{{=}}","="); if(parametry_modul.TypeString(tab_value[2]))then table.insert(tab_str,"\""..tab_value[2].."\""); else table.insert(tab_str,tostring(tab_value[2])); end; end; end; end; table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); table.insert(tab_str,zawartosc or ""); table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<"); table.insert(tab_str,"/"); table.insert(tab_str,name); table.insert(tab_str,jako_szablony and "{{Większy}}" or ">"); return table.concat(tab_str,""); end; function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane) ---- local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(wynik)then return nil;end; local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu; --and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry; ---- local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow; local parametry_modul=require("Module:Parametry"); if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); else nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod); tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa); end; if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then ---- if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then if(__FUNKCJA1 or __FUNKCJA_domyslna)then local techniczne_modul=require("Module:Techniczne"); if(not tab_pop)then if((kod)and(tablica_danych_parametrow_szablonu_strony))then local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3]; local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer and tablica_danych_parametrow_szablonu_strony_numer[kod]; if(tablica_danych_parametrow_szablonu_strony_numer_kod and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony )then tablica_danych_parametrow_szablonu_strony_numer[kod]=nil; end; end; end; nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu; nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(__FUNKCJA1)then return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); else return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA8)then return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then if(__FUNKCJA2)then return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow)then if(tabela_modyfikatorow["#invoke:"])then if(__FUNKCJA3)then return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; elseif(tabela_modyfikatorow["#tag:"])then if(__FUNKCJA4)then nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu); return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil; if(czy_sa_takie_funkcje)then local function CzyTenSzablonToParser(tabela_modyfikatorow) for name,value in pairs(tabela_modyfikatorow)do if(mw.ustring.match(name,"^#%a+:$"))then return true; end; end; return false; end; if(CzyTenSzablonToParser(tabela_modyfikatorow))then if(__FUNKCJA5)then return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; else if(__FUNKCJA6)then return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; else if(__FUNKCJA9)then return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); elseif(__FUNKCJA_domyslna)then return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod); end; end; end; p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame) local parametry_modul=require("Module:Parametry"); local PobierzParametr=parametry_modul.PobierzParametr(frame); local tekst=PobierzParametr(1) or PobierzParametr("tekst"); local pattern=PobierzParametr(2) or PobierzParametr("wzór"); local szablon=PobierzParametr(3) or PobierzParametr("szablon"); local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami"); ---- local parametry_modul=require("Module:Parametry"); czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami)) and czy_z_parametrami or (((not parametry_modul.TypeString(czy_z_parametrami)) and(not parametry_modul.TypeNil(czy_z_parametrami)) and(not parametry_modul.TypeBoolean(czy_z_parametrami))) and czy_z_parametrami or (parametry_modul.CzyTak(czy_z_parametrami) and true or false) ) ); ---- szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",}; szablon=mw.getContentLanguage():ucfirst(szablon); ---- local iter=mw.ustring.gmatch(tekst,pattern); for nazwa_szablonowa in iter do local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa); local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon); if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then if(nazwa_szablonu==szablon)then return "tak"; end; end; end; return nil; end; return p; 9nf85eerxiqw4whnma1fd3icidc4vtl Moduł:Szablonowe/Potrzebne 828 60145 551668 546370 2026-08-13T01:23:03Z Persino 2851 551668 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __metatablica={}; szablonowe_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); while(true)do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then local szablon,name,value=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then local szablon,name=mw.ustring.match(atrybuty,"^(%s+(%a+)%s+)"); if(not name)then break; else tab_atrybuty[name]=true; end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); end; szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,"^"..szablon," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; ibc9xutuvwpnwqy5jvi0h8o7h81in35 551669 551668 2026-08-13T01:39:39Z Persino 2851 551669 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __metatablica={}; szablonowe_modul.MetaTabelkaParsowanieSzablonu(__metatablica); local tab_atrybuty={}; setmetatable(tab_atrybuty,__metatablica); while(not mw.ustring.match(atrybuty,"^%s*$"))do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then szablon,name,value=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then szablon,name=mw.ustring.match(atrybuty,"^(%s+(%a+)%s+)"); if(not name)then break; else tab_atrybuty[name]=true; end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); end; szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,"^"..szablon," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; g1qjvneesuuqm8ij3zf5quehjup32a4 551671 551669 2026-08-13T01:46:24Z Persino 2851 551671 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty={}; while(true)do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)"); if(not name)then break;end; tab_atrybuty[name]=true; name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,name," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; s1ya3icf7bx03zzzl3kt3lburmjet9h 551672 551671 2026-08-13T01:51:44Z Persino 2851 551672 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; while(true)do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)"); if(not name)then break;end; tab_atrybuty[name]=true; name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,name," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; 8yqis1cvinf6g1rcxlycx2x42nce1kc 551674 551672 2026-08-13T01:58:06Z Persino 2851 551674 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; while(not mw.ustring.match(atrybuty,"^%s*$"))do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then szablon,name,value=mw.ustring.match(atrybuty,"^(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then szablon,name=mw.ustring.match(atrybuty,"^(%s+(%a+)%s+)"); if(not name)then break; else tab_atrybuty[name]=true; end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); end; else tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); end; szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,"^"..szablon," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; dewru94jkjrgaax82shwofbzmavbjqw 551675 551674 2026-08-13T02:03:03Z Persino 2851 551675 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local tab_atrybuty=tab_atrybuty or {}; while(true)do local szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)"); if((not szablon)or(not name)or(not value))then break;end; tab_atrybuty[name]=szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value); szablon=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,szablon," "); end; while(true)do local szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)"); if(not name)then break;end; tab_atrybuty[name]=true; name=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](szablon); atrybuty=mw.ustring.gsub(atrybuty,name," "); end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; 8yqis1cvinf6g1rcxlycx2x42nce1kc 551676 551675 2026-08-13T02:27:57Z Persino 2851 551676 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; tab_atrybuty={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty[name]={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec-1; __tab_atrybuty={name,true,start,}; end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for _,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; qhpzsv5itr0r2p6sjf0auwa5sk7o568 551677 551676 2026-08-13T02:45:49Z Persino 2851 551677 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; tab_atrybuty={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty[name]={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec-1; __tab_atrybuty={name,true,start,}; end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]={tab_value[2],}; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; a5fxe5s0p2fnm0nfindxlr030sj3z1q 551678 551677 2026-08-13T02:49:01Z Persino 2851 551678 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty[name]={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec-1; __tab_atrybuty={name,true,start,}; end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; a37v7q5actt958kz6lfvutl3hnx76i6 551679 551678 2026-08-13T02:59:27Z Persino 2851 551679 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}; end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; __tab_atrybuty={name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}; end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec-1; __tab_atrybuty={name,true,start,}; end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; kgaxgdz226uwxl5dfgyjnj5ny4wtzh7 551680 551679 2026-08-13T03:05:05Z Persino 2851 551680 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; table.insert(__tab_atrybuty,{name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}); end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec-1; table.insert(__tab_atrybuty,{name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}); end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec-1; table.insert(__tab_atrybuty,{name,true,start,}); end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; kis3tvg57dc05jje1ed9elxyeenmf7b 551681 551680 2026-08-13T03:16:17Z Persino 2851 551681 Scribunto text/plain local p={}; function p.TranslatorProstyTekstDoEncodeWikiTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end); return tekst; end; function p.TranslatorOdwrotnyEncodeWikiTekstDoTekst(tekst) local szablonowe_modul=require("Module:Szablonowe"); tekst=mw.ustring.gsub(tekst,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end); return tekst; end; function p.AtrybutyZnacznika(atrybuty,tab_element,tab_atrybuty) local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); local html_modul=require("Module:Html"); local tab_specjalne; if(tab_element)then atrybuty=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(atrybuty,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="UCIECZKI")then return szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(obiekt,kod); end; return szablon; end); else tab_specjalne={};local ile=1; atrybuty=mw.ustring.gsub(atrybuty,"(\\[\"'])",function(wyraz_specjalny) local wyraz=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu("UCIECZKI",ile); tab_specjalne[wyraz]=wyraz_specjalny; ile=ile+1; return wyraz; end); end; atrybuty=" "..atrybuty.." "; local __tab_atrybuty={}; local __start=1; while(true)do local start,koniec,szablon,name,_,value,_=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([\"'])(.-)(%3)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; table.insert(__tab_atrybuty,{name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(html_modul.TekstoweKodyHtmlZnacznikoweTypowoTagoweParametroweZamienianiaNaZnak(value)),start,}); end; __start=1; while(true)do local start,koniec,szablon,name,value=mw.ustring.match(atrybuty,"(%s+(%a+)%s*=%s*([%a%d]+)%s+)",__start); if((not szablon)or(not name)or(not value))then break;end; __start=koniec; table.insert(__tab_atrybuty,{name,szablonowe_modul.ZnacznikoweTrueFalseSzeregZnakowy(value),start,}); end; __start=1; while(true)do local start,koniec,szablon,name=mw.ustring.match(atrybuty,"(%s+(%a+)%s+)",__start); if(not name)then break;end; __start=koniec; table.insert(__tab_atrybuty,{name,true,start,}); end; table.sort(__tab_atrybuty,function(a,b) return (a[3]<b[3]); end) local tab_atrybuty=tab_atrybuty or {}; for name,tab_value in ipairs(__tab_atrybuty)do tab_atrybuty[tab_value[1]]=tab_value[2]; end; local parametry_modul=require("Module:Parametry"); for name,value in pairs(tab_atrybuty) do if(not parametry_modul.TypeBoolean(value))then local value;local ile; if(tab_element)then value,ile=mw.ustring.gsub(atrybuty,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI"),function(obiekt,kod) local szablon=(tab_element[obiekt] or {})[kod]; return szablon; end); else value,ile=mw.ustring.gsub(value,"("..szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu("UCIECZKI")..")",function(wyraz) local wynik=tab_specjalne[wyraz]; return wynik; end); end; if(ile>0)then tab_atrybuty[name]=value; end; end; end; return tab_atrybuty; end; function p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tab_element) local szablonowe_modul=require("Module:Szablonowe"); local function ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,nazwa,czy_tak) nazwa=nazwa or "ATRYBUTY"; if(not tab_element[nazwa])then tab_element[nazwa]={};end; tab_element[nazwa][#tab_element[nazwa]+1]=szablon; local ile=#tab_element[nazwa]; if(not czy_tak)then local szablon_kod=szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa,ile); return szablon_kod; else local szablon_kod=szablonowe_modul.NormaKoduZakodowanegoEncodeWikiTekstu(nazwa,ile); return szablon_kod; end; end; local function ZNAKI_UCIECZKI(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(([\\]*)(\\[\"']))",function(szablon,przed,po) local ile=#przed; if(math.mod(ile,2)==0)then szablon=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon,"UCIECZKI",true); return szablon; end; return nil; end); return tekst_artykulu; end; local function ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow) local _, ile=mw.ustring.gsub(szablon2,"("..cudzyslow..")",function(s)return nil;end); if(math.mod(ile,2)==0)then szablon2=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon2,nil,true); return szablon1..szablon2..szablon3,true; else szablon2=mw.ustring.gsub(szablon2,"("..cudzyslow..".*"..cudzyslow..")(.-"..cudzyslow.."[^"..cudzyslow.."]*)$",function(__szablon1,__szablon2) __szablon1=ROZWAZANIA_SZABLONOWE_ATRYBUTY(__szablon1,nil,true); return __szablon1..__szablon2; end); szablon3=ROZWAZANIA_SZABLONOWE_ATRYBUTY(szablon3,"KOŃCOWE",true); return szablon1..szablon2..szablon3,false; end; end; tekst_artykulu=ZNAKI_UCIECZKI(tekst_artykulu); local KodowaniaZnakoweAtrybutoweNieucieczkowe=function(tekst_artykulu,wzor) repeat local ile_naprawy_znacznikow=nil; local ile_naprawy_znacznikow_odejmnoc=0; tekst_artykulu,ile_naprawy_znacznikow=mw.ustring.gsub(tekst_artykulu,wzor,function(szablon1,szablon2,cudzyslow,szablon3) local szablon,tak=ATRYBUTY(szablon1,szablon2,szablon3,cudzyslow); if(tak)then ile_naprawy_znacznikow_odejmnoc=ile_naprawy_znacznikow_odejmnoc+1;end; return szablon; end); ile_naprawy_znacznikow=ile_naprawy_znacznikow-ile_naprawy_znacznikow_odejmnoc; until(ile_naprawy_znacznikow==0); return tekst_artykulu; end; tekst_artykulu=KodowaniaZnakoweAtrybutoweNieucieczkowe(tekst_artykulu,"(</?[%a%d]+%s+)([^<>]-([\"']).-%3[^<>]-)(/?>)"); local PodmienianieSzablonoweEncodeWikiTestuNaTekstu=function(obiekt,kod,ile) kod=tonumber(kod); local szablon=(tab_element[obiekt] or {})[kod]; if(not szablon)then return nil;end; local szablon_kodowy=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); ile=ile+1; return szablon_kodowy,ile; end; tekst_artykulu=mw.ustring.gsub(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,0); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); tekst_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element, function(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica) local ile=0; local szablon=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),function(obiekt,kod) if(obiekt~="UCIECZKI")then local szablon_kodowy; szablon_kodowy,ile=PodmienianieSzablonoweEncodeWikiTestuNaTekstu(obiekt,kod,ile); if(not szablon_kodowy)then return nil;end; return szablon_kodowy; end; return nil; end); if(ile==0)then return nil;end; return true,szablon,obiekt,kod; end); tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst_artykulu,nil,tab_element,function(szablon,obiekt,kod) if(obiekt=="KOŃCOWE")then return szablon; end; return nil,true; end); return tekst_artykulu,tab_element; end; function p.MetaTabelkaSzablonowe(__metatablica) local tablica={};local __FUNKCJA; __metatablica.UstawTablica=function(tablica_inna) return function() return tablica_inna or tablica; end; end; __metatablica.UstawFunkcjaDaneParametry=function(__FUNKCJA_start,obiekt) __FUNKCJA=__FUNKCJA_start(obiekt); end; local fun_tablica=__metatablica.UstawTablica(tablica); __metatablica.tablica=function() return fun_tablica(); end; __metatablica.__len=function(t) return #fun_tablica(); end; __metatablica.__index=function(t,klucz) local tab=fun_tablica()[klucz]; if(tab==nil)then return nil;end; return tab[1]; end; __metatablica.__newindex=function(t,klucz,wartosc) if(wartosc~=nil)then local wartosc_tablicy=fun_tablica()[klucz]; if(wartosc_tablicy~=nil)then wartosc_tablicy[1]=wartosc; wartosc_tablicy[2]=false; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,wartosc_tablicy,false);end; else local tab={wartosc,true,}; fun_tablica()[klucz]=tab; if(__FUNKCJA)then __FUNKCJA(fun_tablica(),klucz,tab,true);end; end; else fun_tablica()[klucz]=nil; end; end; local function iter_pairs(tablica,klucz) klucz=next(tablica,klucz); local tab = tablica[klucz]; if tab then return klucz, tab[1]; end end; __metatablica.__pairs=function(t) return iter_pairs,fun_tablica(),nil; end; local function iter_ipairs(a,i) i=i+1; local v = a[i]; if v then return i, v; end end; __metatablica.__ipairs=function(t) return iter_ipairs,fun_tablica(),0; end; __metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2) local tabelka_metatable=__metatablica.tablica(); local __metatablica2={}; p.MetaTabelkaSzablonowe(__metatablica2); local value2={}; local iteratorFun=function(value) local klucz=nil; return function() klucz=next(value,klucz); return klucz; end; end; local iterator=iteratorFun(value); for klucz in iterator do rawset(value2,klucz,rawget(value,klucz)); end; setmetatable(value2,__metatablica2); local tabelka_metatable2=__metatablica2.tablica(); funkcja2(tabelka_metatable,tabelka_metatable2); funkcja(value2,false); end; end; function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY) local numer_szablonu; local strony_modul=require("Module:Strony"); local szeregi_modul=require("Module:Szeregi"); local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane"); local szablonowe_modul=require("Module:Szablonowe"); local specjalne_modul=require("Module:Specjalne"); local tab_wiki_znacznik=szablonowe_dane_modul.tablica_wiki_znaczniki; local tablica_znacznikowa_preprocesora_szablonowego=szablonowe_dane_modul.tablica_znacznikowa_preprocesora_szablonowego; local function InicjujNumeryPoczatkoweObiektowSzablonow() if(not __FUNKCJA3)then numer_szablonu={}; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do numer_szablonu[obiekt]=1; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do numer_szablonu[obiekt]=1; end; else numer_szablonu=__FUNKCJA3(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; local PREWSTAWIAJACA=nil;local NiedokonczoneElementyWikikodu=nil;local czy_wynik=true; local function ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,co) if(__FUNKCJA2)then local wynik=__FUNKCJA2(szablon,co,numer_szablonu[co or "SZABLON"],tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); if(wynik)then numer_szablonu[co or "SZABLON"]=numer_szablonu[co or "SZABLON"]+1; wynik=(czy_wynik and PREWSTAWIAJACA) and PREWSTAWIAJACA(wynik) or wynik; return wynik,false; end; end; if(__FUNKCJA)then szablon=__FUNKCJA(szablon,co,numer_szablonu[co or "SZABLON"]) or szablon; end; local kod=szablonowe_modul.NormaKoduKodowaniaTekstu(co,numer_szablonu[co or "SZABLON"]); --- local tab_co=tablica_analizy_obiektow_strony_dany_modul[co or "SZABLON"]; local __metatablica=getmetatable(tab_co); local czy_ustawiona_metatabelka=__metatablica and true or false; if(not __metatablica)then __metatablica={}; p.MetaTabelkaSzablonowe(__metatablica); setmetatable(tab_co,__metatablica); end; local tablica_co=__metatablica.tablica(); local obiekt=co or "SZABLON"; if((__FUNKCJA_PARAMETRY)and(not czy_ustawiona_metatabelka))then __metatablica.UstawFunkcjaDaneParametry(__FUNKCJA_PARAMETRY,obiekt); end; tablica_co[numer_szablonu[obiekt]]={szablon,false,}; --- numer_szablonu[obiekt]=numer_szablonu[obiekt]+1; return kod,true; end; local function AnalizaObiektowSzablonowegoTekstu(tekst_artykulu) local ile_znacznik_niedomykajacy_0;local ile_znacznik_niedomykajacy_1;local ile_znacznik_niedomykajacy_2; local techniczne_modul=require("Module:Techniczne"); local tab_licznik_poczatek={}; local tab_licznik_koniec={}; local tab_element={}; local ObiektFun=function(nazwa) return szablonowe_dane_modul.tablica_znaczniki_typowo_mechanizmu_mediawiki[nazwa] or (__FUNCTION_INCLUDE and __FUNCTION_INCLUDE(nazwa) and tablica_znacznikowa_preprocesora_szablonowego[nazwa] and "INCLUDE" or nil) or (tab_wiki_znacznik[nazwa] and "ZNACZNIK" or nil); end; local INCLUDE=function(tekst_artykulu) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<[^<>]") end; local INNEPRE=function(tekst_artykulu,czy_poczt,czy_szablon) local function INNEPREROZ(poczatek,koniec) repeat local ile;local ile2=0; tekst_artykulu,ile=mw.ustring.gsub(tekst_artykulu,(poczatek and "\n" or "^").."([^%S\n]+)([^\n]*)"..(koniec and "\n" or "$"),function(spacje,kod) if((not czy_szablon)or((czy_szablon)and((not mw.ustring.match(kod,"[|=]"))and((koniec)and true or (not mw.ustring.match(kod,"^[^%S\n]*$"))))))then kod=NiedokonczoneElementyWikikodu(kod); local szablon=spacje..kod; return (poczatek and "\n" or "")..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"INNEPRE")..(koniec and "\n" or ""); else ile2=ile2+1; end; end); ile=ile-ile2; until (ile==0); end; if(not czy_poczt)then INNEPREROZ(false,true); INNEPREROZ(false,false); end; INNEPREROZ(true,true); INNEPREROZ(true,false); return tekst_artykulu; end; local tab_znaczniki={}; local tab_numerki={}; local function PreprocesorSzablonow(tekst_artykulu) tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul=p.KodowanieAtrybutoweZnacznikowe(tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul); local function ZnacznikiWiki(tekst_artykulu,czy_zawsze,czy_inne) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)([%a%d]+)(%s*)([^<>]-)(%s*)>",function(koniec,nazwa,odstepy_przed,tekst,odstepy_po) ----- if((odstepy_przed=="")and((tekst~="")and(tekst~="/")))then return;end; if(koniec=="")then local nazwa=mw.ustring.lower(nazwa); table.insert(tab_znaczniki,nazwa); local koniec_samozamykajacy=mw.ustring.match(tekst,"^(.-)%s*(/?)%s*$"); if(koniec_samozamykajacy=="/")then tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; end; tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; if(not tab_numerki[nazwa])then tab_numerki[nazwa]={};end; table.insert(tab_numerki[nazwa],tab_licznik_poczatek[nazwa]); local licznik=tab_licznik_poczatek[nazwa]; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "innebegin" or "incbegin") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "begin" or nil); if(not jak)then return;end; ---- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "<"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; else local nazwa=mw.ustring.lower(nazwa); tab_licznik_koniec[nazwa]=(tab_licznik_koniec[nazwa] or 0)+1; local licznik; if(#tab_znaczniki>0)then if(tab_znaczniki[#tab_znaczniki]~=nazwa)then local koniec=0; for i=#tab_znaczniki-1,1,-1 do if(tab_znaczniki[i]==nazwa)then koniec=i; break; end; end; if(koniec>0)then licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; for i=koniec+1,#tab_znaczniki,1 do tab_licznik_koniec[tab_znaczniki[i]]=(tab_licznik_koniec[tab_znaczniki[i]] or 0)+1; end; for i=koniec,#tab_znaczniki,1 do table.remove(tab_numerki[tab_znaczniki[i]]); end; for i=#tab_znaczniki,koniec,-1 do table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_poczatek[nazwa]; end; else licznik=tab_numerki[nazwa][#tab_numerki[nazwa]]; table.remove(tab_numerki[nazwa]); table.remove(tab_znaczniki); end; else tab_licznik_poczatek[nazwa]=(tab_licznik_poczatek[nazwa] or 0)+1; licznik=tab_licznik_koniec[nazwa]; end; local szablon=nazwa..odstepy_przed..tekst..odstepy_po; if(not tab_element)then tab_element={};end; local typ=ObiektFun(nazwa); if(not typ)then return "&lt;"..koniec..nazwa..odstepy_przed..tekst..odstepy_po.."&gt;"; end; --- local czy_znacznik=(typ=="ZNACZNIK"); local czy_include=(typ=="INCLUDE"); local jak=(((czy_zawsze)or(czy_inne))and(not czy_znacznik))and ((not czy_include)and "inneend" or "incend") or (((czy_zawsze)or(not czy_inne))and(czy_znacznik)and "end" or nil); if(not jak)then return;end; --- if(not tab_element[nazwa..jak])then tab_element[nazwa..jak]={};end; tab_element[nazwa..jak][licznik]=szablon; return "</"..szablonowe_modul.NormaKoduKodowaniaTekstu(nazwa..jak,licznik)..">"; end; end); return tekst_artykulu; end; tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,true); local function ZnacznikiWikiLinia(tekst_artykulu,wzor1,wzor2) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu, function(linia) local a;local b; a=mw.ustring.match(linia,wzor1); if(not a)then a,b=mw.ustring.match(linia,wzor2); if(not a)then return nil;end; end; if(b)then b=ZnacznikiWiki(b,false,false); return a..b; else a=ZnacznikiWiki(a,false,false); return a; end; end); return tekst_artykulu; end; ---- tekst_artykulu=ZnacznikiWikiLinia(tekst_artykulu,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$","^([%*#;:]+)([^\n]+)$"); tekst_artykulu=ZnacznikiWiki(tekst_artykulu,false,false); ---- local function AnalizujDomykajace(tekst_artykulu,jak,co) local tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"<(/?)("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak..co,"(%d+)")..")>",function(poczatek,nazwa_przed_nieodkodowane,obiekt,kod) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty,koniec=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*(/?)%s*$"); nazwa=mw.ustring.lower(nazwa); if((koniec=="/")or(nazwa=="br")or(nazwa=="hr")or(nazwa=="templatestyles"))then local szablon="<"..poczatek..nazwa_przed..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; return nil; end); return tekst_artykulu; end; tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","begin"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"inne","end"); tekst_artykulu=AnalizujDomykajace(tekst_artykulu,"","end"); ---- return tekst_artykulu; end; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); local function Kompilacja(tekst_artykulu) ---- local ZamianaLINKWNaLINKZ=function(zawartosc,dalej) local czy_url=strony_modul.SprawdzanieURL(zawartosc); if(czy_url)then local szablon="["..zawartosc.."]"; return "["..ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKZ").."]"..dalej; else if((dalej)and(dalej~=""))then if(specjalne_modul["CzyAdresLinkuWewnętrznego"]{adres=zawartosc,})then local szablon; if(mw.ustring.match(zawartosc,"|"))then szablon="[["..zawartosc..dalej.."]]"; else local nazwa=mw.ustring.gsub(zawartosc,"^[%s_]*:[%s_]*",""); szablon="[["..zawartosc.."|"..nazwa..dalej.."]]"; end; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW"); end; end; local szablon="[["..zawartosc.."]]"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"LINKW")..dalej; end; end; local PracePrzygotowywujace; NiedokonczoneElementyWikikodu=function(tekst_artykulu,czy_main) local function DomykajaceIOdtwierajace(tekst_artykulu,jak,tablica_znacznikow) repeat local ile_znacznik_niedomykajacy; local ile_znacznik_niedomykajacy_ujemny=0; tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.*)$",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_przed])then ile_znacznik_niedomykajacy_ujemny=ile_znacznik_niedomykajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa_przed..">"..zawartosc..((mw.ustring.match(zawartosc,"\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$") or mw.ustring.match(zawartosc,"\n[%*#:;][^\n]*$") ) and "\n" or "").."</"..nazwa..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_niedomykajacy=ile_znacznik_niedomykajacy-ile_znacznik_niedomykajacy_ujemny; until (ile_znacznik_niedomykajacy==0); repeat local ile_znacznik_nieotwierajacy; local ile_znacznik_nieotwierajacy_ujemny=0; tekst_artykulu,ile_znacznik_nieotwierajacy=mw.ustring.gsub(tekst_artykulu,"^(.*)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."end","(%d+)")..")>",function(zawartosc,nazwa_po_nieodkodowane,obiekt,kod) local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); if(tablica_znacznikow)then if(not tablica_znacznikow[nazwa_po])then ile_znacznik_nieotwierajacy_ujemny=ile_znacznik_nieotwierajacy_ujemny+1; return nil; end; end; zawartosc=INNEPRE(zawartosc); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_po,"^([%a%d]+)(%s*)(.-)%s*$"); local szablon="<"..nazwa..">"..((mw.ustring.match(zawartosc,"^=[^\n]*[^%s=][^\n]*=[^%S\n]*\n") or mw.ustring.match(zawartosc,"^[%*#:;][^\n]*\n") ) and "\n" or "")..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"ZNACZNIK"); end); ile_znacznik_nieotwierajacy=ile_znacznik_nieotwierajacy-ile_znacznik_nieotwierajacy_ujemny; until (ile_znacznik_nieotwierajacy==0); return tekst_artykulu; end; if(__FUNCTION_niedokonczone)then local wynik,gdy_nie,tablica_znacznikow,czy_koniec,__FUNCTION=__FUNCTION_niedokonczone(tekst_artykulu,tab_element); if(gdy_nie)then if(czy_koniec)then return wynik or tekst_artykulu;end; tekst_artykulu=wynik or tekst_artykulu; tekst_artykulu=__FUNCTION and __FUNCTION(tekst_artykulu) or tekst_artykulu; tekst_artykulu=tablica_znacznikow and DomykajaceIOdtwierajace(tekst_artykulu,"",tablica_znacznikow) or tekst_artykulu; return tekst_artykulu; else tekst_artykulu=wynik or tekst_artykulu; end; end; local function DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu) repeat local ile_wikitabela_1; tekst_artykulu,ile_wikitabela_1=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"({|)(.-)$", function(szereg,numer,licznik_wzor,numer_a,numer_b,poczatek,szablon) return mw.ustring.match(szablon,"\n%{%|"),((licznik_wzor==1)and 2 or 3); end, function(licznik_wzor,poczatek,szablon) szablon=INNEPRE(szablon,true); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return (((czy_main)and(licznik_wzor==1)) and "" or "\n")..ZamienObiektSzablonuKodem(self,poczatek..szablon.."\n|}",tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end, function(wzor,licznik_wzor,czy) if(czy_main)then if(licznik_wzor==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until (ile_wikitabela_1==0); repeat local ile_wikitabela_2; tekst_artykulu,ile_wikitabela_2=mw.ustring.gsub(tekst_artykulu,"^(.-)(\n|})",function(szablon,koniec) szablon=INNEPRE(szablon); szablon=NiedokonczoneElementyWikikodu(szablon); szablon=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon,nil,tab_element); return ZamienObiektSzablonuKodem(self,"\n{|\n"..szablon..koniec,tablica_analizy_obiektow_strony_dany_modul,"WIKITABELA"); end); until (ile_wikitabela_2==0); return tekst_artykulu; end; local function DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne) tekst_artykulu=szeregi_modul.ZamianaZnakowaLinii(tekst_artykulu,function(linia) local dodatnie=nil; local a,b,c=mw.ustring.match(linia,wzor_dodatnie); if((not a)or(not b)or(not c))then a,b=mw.ustring.match(linia,wzor_ujemne); if((not a)or(not b))then return nil;end; c=nil; else dodatnie=true; end; if(dodatnie)then b=DomykajaceIOdtwierajace(b,""); return a..b..c; else b=DomykajaceIOdtwierajace(b,""); return a..b; end; end); return tekst_artykulu; end; --- tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); ----- local wzor_dodatnie="^(=+[^%S\n]*)([^\n]-[^%s=][^\n]-)([^%S\n]*=+[^%S\n]*)$"; local wzor_ujemne="^([%*#;:]+[^%S\n]*)([^\n]+)$"; tekst_artykulu=DomykajaceIOdtwierajaceLinia(tekst_artykulu,wzor_dodatnie,wzor_ujemne); ----- --- --tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,"inne"); tekst_artykulu=DomykajaceIOdtwierajace(tekst_artykulu,""); tekst_artykulu=DomykajaceIOdtwierajaceWikiTabelka(tekst_artykulu); return tekst_artykulu; end; local function ZNACZNIKI(tekst_artykulu,jak) local ile_odjac_znacznik_niedomykajacy=0; local tekst_artykulu,ile_znacznik_niedomykajacy=mw.ustring.gsub(tekst_artykulu,"<("..szablonowe_modul.NormaWzoruKodowaniaTekstu("([%a%d]+)"..jak.."begin","(%d+)")..")>(.-)</("..szablonowe_modul.NormaWzoruKodowaniaTekstu("(%2)"..jak.."end","(%3)")..")>",function(nazwa_przed_nieodkodowane,obiekt,kod,zawartosc,nazwa_po_nieodkodowane,obiekt2,kod2) local nazwa_przed=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_przed_nieodkodowane,nil,tab_element); local nazwa,odstepy,atrybuty=mw.ustring.match(nazwa_przed,"^([%a%d]+)(%s*)(.-)%s*$"); nazwa=mw.ustring.lower(nazwa); local function TenZnacznik() local nazwa_po=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,nazwa_po_nieodkodowane,nil,tab_element); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(jak=="")then zawartosc=INNEPRE(zawartosc,true); end; local szablon="<"..nazwa_przed..">"..zawartosc.."</"..nazwa_po..">"; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,ObiektFun(nazwa)); end; local function InneZnacznik() ile_odjac_znacznik_niedomykajacy=ile_odjac_znacznik_niedomykajacy+1; local szablon="<"..nazwa_przed_nieodkodowane..">"..zawartosc.."</"..nazwa_po_nieodkodowane..">"; return szablon; end; if(not mw.ustring.match(atrybuty,"^%s*$"))then if(odstepy~="")then if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; else return InneZnacznik(); end; else if((jak~="")and(jak~="inc"))then return TenZnacznik(); end; end; ---- local ile_zastapione;local ile_pominiete; zawartosc,ile_zastapione,ile_pominiete=ZNACZNIKI(zawartosc,jak); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); return TenZnacznik(); end); return tekst_artykulu,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; end; ---- PracePrzygotowywujace=function(tekst_artykulu,czy_main) local ile_linkw;local ile_linkz;local ile_var;local ile_template;local ile_wikitabela; local function Szablon(zawartosc,przed,po,obiekt,czy_linkw,dalej) local ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy; zawartosc,ile_znacznik_niedomykajacy,ile_odjac_znacznik_niedomykajacy=ZNACZNIKI(zawartosc,""); zawartosc=PracePrzygotowywujace(zawartosc); zawartosc=INNEPRE(zawartosc,true,(obiekt=="SZABLON")); zawartosc=NiedokonczoneElementyWikikodu(zawartosc); zawartosc=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,zawartosc,nil,tab_element); if(czy_linkw)then return ZamianaLINKWNaLINKZ(zawartosc,dalej); else local szablon=przed..zawartosc..po; return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,obiekt); end; end; repeat repeat tekst_artykulu,ile_linkw=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[%[(.-%[?)%]%](%]?)(%l*)", function(szereg,numer,numer_a,numer_b,szablon,dodatkowe,dalej) return mw.ustring.match(szablon,"%[%["),2; end, function(szablon,dodatkowe,dalej) if(dodatkowe~="")then local czy_linkz=mw.ustring.match(szablon,"%[[^%[%]]*$"); if(czy_linkz)then szablon=szablon..dodatkowe; return Szablon(szablon,"[[","]]","LINKW",true,dalej); else return Szablon(szablon,"[[","]]","LINKW",true,"")..dodatkowe..dalej; end; else return Szablon(szablon,"[[","]]","LINKW",true,dalej); end; end); until (ile_linkw==0); tekst_artykulu,ile_linkz=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"%[(.-)%]", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%["),1; end, function(szablon) return Szablon(szablon,"[","]","LINKZ"); end); repeat tekst_artykulu,ile_var=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{{(.-)}}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{%{"),3; end, function(szablon) return Szablon(szablon,"{{{","}}}","ZMIENNA"); end); until (ile_var==0); tekst_artykulu,ile_template=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{{(.-)}}", function(szereg,numer,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"%{%{"),2; end, function(szablon) return Szablon(szablon,"{{","}}","SZABLON"); end); tekst_artykulu,ile_wikitabela=szeregi_modul.ZamianaZnakowaSzeregu(tekst_artykulu,"{|(.-)\n|}", function(szereg,numer,licznik_wzor,numer_a,numer_b,szablon) return mw.ustring.match(szablon,"\n%{%|"),(czy_main and ((licznik_wzor==1) and 2 or 3) or 3); end, function(licznik_wzor,szablon) if((czy_main)and(licznik_wzor==1))then return Szablon(szablon,"{|","\n|}","WIKITABELA"); else return "\n"..Szablon(szablon,"{|","\n|}","WIKITABELA"); end; end, function(wzor,numer_begin,czy) if(czy_main)then if(numer_begin==1)then return "^"..wzor,true;end; return "\n"..wzor,false; else return "\n"..wzor,false; end; end); until ((ile_linkw==0)and(ile_linkz==0)and(ile_var==0)and(ile_template==0)and(ile_wikitabela==0)); return tekst_artykulu; end; ---- local ile_odjac_znacznik_niedomykajacy_0; if(__FUNCTION_INCLUDE)then tekst_artykulu,ile_znacznik_niedomykajacy_0,ile_odjac_znacznik_niedomykajacy_0=ZNACZNIKI(tekst_artykulu,"inc"); ile_znacznik_niedomykajacy_0=ile_znacznik_niedomykajacy_0-ile_odjac_znacznik_niedomykajacy_0; ---- tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul) if(obiekt=="INCLUDE")then local nazwa,zawartosc,tab=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul); if(__FUNCTION_INCLUDE(nazwa))then local function inc(zawartosc) return (mw.ustring.match(tekst_artykulu,"{{{[^{}|]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."%s*}}}") or mw.ustring.match(tekst_artykulu,"{{.-|.-"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..".-}}") )and true or false; end; if(nazwa=="noinclude")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and "" or zawartosc; else return zawartosc; end; elseif(nazwa=="includeonly")then if(poziom_iteracji==0)then return (not inc(zawartosc)) and zawartosc or ""; else return ""; end; end; end; end; return nil,true; end); end; ---- local ile_odjac_znacznik_niedomykajacy_1; tekst_artykulu,ile_znacznik_niedomykajacy_1,ile_odjac_znacznik_niedomykajacy_1=ZNACZNIKI(tekst_artykulu,"inne"); ile_znacznik_niedomykajacy_1=ile_znacznik_niedomykajacy_1-ile_odjac_znacznik_niedomykajacy_1; ---- tekst_artykulu=PracePrzygotowywujace(tekst_artykulu,true); ---- local ile_odjac_znacznik_niedomykajacy_2; tekst_artykulu,ile_znacznik_niedomykajacy_2,ile_odjac_znacznik_niedomykajacy_2=ZNACZNIKI(tekst_artykulu,""); return tekst_artykulu; end; PREWSTAWIAJACA=function(tekst_artykulu) czy_wynik=nil; tekst_artykulu=PreprocesorSzablonow(tekst_artykulu); tekst_artykulu=Kompilacja(tekst_artykulu); czy_wynik=true; return tekst_artykulu; end; tekst_artykulu=Kompilacja(tekst_artykulu) local function PoczatekKoniecTekst(tekst_artykulu) local tekst_poczatek=(__FUNKCJA_poczatek and __FUNKCJA_poczatek(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); local tekst_koniec=(__FUNKCJA_koniec and __FUNKCJA_koniec(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or nil); if(((tekst_poczatek)and(not mw.ustring.match(tekst_poczatek,"^%s*$")))or((tekst_koniec)and(not mw.ustring.match(tekst_koniec,"^%s*$"))))then tekst_poczatek=tekst_poczatek and PREWSTAWIAJACA(tekst_poczatek) or tekst_poczatek; tekst_koniec=tekst_koniec and PREWSTAWIAJACA(tekst_koniec) or tekst_koniec; tekst_artykulu=(tekst_poczatek or "")..tekst_artykulu..(tekst_koniec or ""); end; return tekst_artykulu; end; tekst_artykulu=PoczatekKoniecTekst(tekst_artykulu); local function PraceKoncowe(tekst_artykulu) tekst_artykulu=NiedokonczoneElementyWikikodu(tekst_artykulu,true); return tekst_artykulu; end; tekst_artykulu=PraceKoncowe(tekst_artykulu); tekst_artykulu=szablonowe_modul.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_artykulu,nil,tab_element); tekst_artykulu=INNEPRE(tekst_artykulu); tekst_artykulu=szablonowe_modul.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul); return tekst_artykulu; end; local function InicjujTabela() if(not __FUNKCJA3)then if(not __FUNKCJA4)then for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do tablica_analizy_obiektow_strony_dany_modul[obiekt]={}; end; else tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; else if(__FUNKCJA4)then tablica_analizy_obiektow_strony_dany_modul=__FUNKCJA4(tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul); end; end; end; local function UstawieniaPoczatkoweObiektowSzablonow() if(not tablica_analizy_obiektow_strony_dany_modul)then if((self.tablica_analizy_obiektow_strony_dany_modul) and(self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]) )then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; numer_szablonu=self.numer_szablonu; else if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end; if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]={};end; --- tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu]; --- InicjujNumeryPoczatkoweObiektowSzablonow(); self.numer_szablonu=numer_szablonu; InicjujTabela(); end; else InicjujNumeryPoczatkoweObiektowSzablonow(); InicjujTabela(); end; end; ---- UstawieniaPoczatkoweObiektowSzablonow(); --- local PreProcesorSTARE=function(tekst_artykulu,wzor_kodu,czy_tak) tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"("..wzor_kodu..")",function(szablon,obiekt,kod) if(czy_tak)then local tablica_szablon_obiekt=tablica_analizy_obiektow_strony_dany_modul and tablica_analizy_obiektow_strony_dany_modul[obiekt] or nil; local kod=tablica_szablon_obiekt and tonumber(kod) or nil; if(kod)then local szablon_wynik=tablica_szablon_obiekt and tablica_szablon_obiekt[kod] or nil; if(not szablon_wynik)then return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); else local wynik=__FUNKCJA2(szablon_wynik,obiekt,kod,tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu); return wynik; end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; else return ZamienObiektSzablonuKodem(self,szablon,tablica_analizy_obiektow_strony_dany_modul,"STARE"); end; end); return tekst_artykulu; end; tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaTekstu(),true); tekst_artykulu=PreProcesorSTARE(tekst_artykulu,szablonowe_modul.NormaWzoruKodowaniaEncodeWikiTekstu(),false); tekst_artykulu=AnalizaObiektowSzablonowegoTekstu(tekst_artykulu); return tekst_artykulu; end; return p; 5d2dpdh5elwgqh7lcbau8z0v9mc3p6w Moduł:StronicowyParser/AnalizaSpisuRzeczy 828 60192 551608 551571 2026-08-12T14:37:13Z Persino 2851 551608 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif(not czy_element_spisu)then tak=true; elseif(czy_okladka)then tak=true; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; lyyy9smimw7nyglcjarxwjzx5i0bgey 551609 551608 2026-08-12T14:41:11Z Persino 2851 Anulowano wersję [[Special:Diff/551608|551608]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 551609 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; elseif(czy_okladka)then tak=true; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; pfa2d0qz08tnonem4zl16i3yfngj0m2 551610 551609 2026-08-12T14:42:24Z Persino 2851 Anulowano wersję [[Special:Diff/551609|551609]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]]) 551610 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif(not czy_element_spisu)then tak=true; elseif(czy_okladka)then tak=true; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; lyyy9smimw7nyglcjarxwjzx5i0bgey 551646 551610 2026-08-12T18:16:00Z Persino 2851 551646 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif(not czy_element_spisu)then tak=true; elseif(czy_okladka)then tak=true; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementySpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; j27ukgwzls14bif467pfhgh6py5vedf 551656 551646 2026-08-12T19:21:38Z Persino 2851 551656 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; end; end; end; return false; end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementySpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; jr47cyyl4gowy6cdmoy6slzrbqh4ou1 551657 551656 2026-08-12T19:56:46Z Persino 2851 551657 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k,l=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k,l; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k,l=nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k,l; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; end; a,b,c,d,e,f,g,h,i,j,k,l=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; elseif(czy_okladka)then tak=true; end; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; 9rqitnvat0nm1jykaigblg34h9gt5cm 551682 551657 2026-08-13T05:00:19Z Persino 2851 551682 Scribunto text/plain local p={}; function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=false; local techniczne_modul=require("Module:Techniczne"); linia=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(linia); for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci) do tak=tak or (((not spacje_na_poczatku) or (not mw.ustring.match(linia,"^%s+"))) and (mw.ustring.match(linia,"^"..p_wzor.."$"))); if(tak)then return true;end; end; return nil; end; function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local techniczne_modul=require("Module:Techniczne"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^\n]+)",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then rozdzial=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(rozdzial); local czy_zerowy_spis_rzeczy; for _,p_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci)do czy_zerowy_spis_rzeczy=mw.ustring.match(rozdzial,p_wzor); if(czy_zerowy_spis_rzeczy)then break;end; end; if((czy_zerowy_spis_rzeczy)and(not mw.ustring.match(rozdzial,"^%s+")))then return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; else liczba_od=liczba_start_rozdzial; end; else return; end; end; return nil; end; function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) if(obiekt=="SZABLON")then return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return;end; return true; end); elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa)and(zawartosc))then if(nazwa=="center")then return true; end; end; end; end; function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); while(true)do local liczba_start_rozdzial,liczba_koniec_rozdzial,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"("..wzor..")",liczba_od,liczba_do,jak); if(liczba_start_rozdzial)then if((not mw.ustring.match(linia,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$"))and(not mw.ustring.match(linia,"^[%*#:;<>]")))then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon,obiekt,kod,poziom_iteracji=iterator(); local wynik=((szablon)and(obiekt)and(kod))and p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil; if(not wynik)then local rozdzial,czy_standardowe_rozdzialy=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((rozdzial)and(czy_standardowe_rozdzialy))then return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; end; end; end; if(jak)then liczba_od=liczba_start_rozdzial;else liczba_od=liczba_koniec_rozdzial;end; else return; end; end; return nil; end; function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne"); local tab_2,numer_rodzaju_artykulu,id,parametry,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA,nil,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych); if(not kom)then local tab=((tab_2 and tab_2[1]) and tab_2 or nil); if(tab)then if(numer_rodzaju_artykulu==1)then local artykul=stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab[1],false); local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))) local function StronyWstepu(artykul) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tak=true; for _,wzor in ipairs(stronicowyparser_obiekty_modul.artykularne_niespisowe) do tak=tak and (not mw.ustring.match(artykul,wzor)); if(not tak)then return tak;end; end; return tak; end; if((czy_glowny_spis_tresci)and(artykul==""))then return false,numer_rodzaju_artykulu,czy_podrecznik,false; else if((czy_usun_okladka)--[[or(numer_rodzaju_artykulu>1)]]or(--[[(numer_rodzaju_artykulu==1)and]](artykul~="")and(StronyWstepu(artykul))))then return true,numer_rodzaju_artykulu,czy_podrecznik,false; else return true,numer_rodzaju_artykulu,czy_podrecznik,true; end; end; else return true,numer_rodzaju_artykulu,--[[czy_podrecznik]]false,false; end; end; end; return false,nil; end; function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(obiekt=="SZABLON")then local szablonowe_modul=require("Module:Szablonowe"); local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) ---- if(nazwa_szablonu=="SpisTreści")then return true,1; else local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]; if(tabela_spisu)then local parametr_linku; if(tabela_spisu[1]==true)then local numer_link=tabela_spisu["numer_link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; else local numer_link=tabela_spisu["link"]; parametr_linku=tabela_parametrow_szablonu[numer_link]; end; if(parametr_linku)then local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(parametr_linku,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; end; end; end; end; end); if(czy_element_spisu)then return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; end; return false; end; function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); if((not czy_element_spisu)and(not numer_rodzaju_artykulu))then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci); end; return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; end; function p.SzukanieNaPodstawieWzoru(str,wzor,liczba,liczba2,czy_od_tylu,jak) if(not czy_od_tylu)then if((liczba)and(liczba2)and(liczba>liczba2))then return;end; local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(str,wzor,liczba); if((a)and(b)and(a>b))then return;end; if((not liczba2)or(b<=liczba2))then return a,b,c,d,e,f,g,h,i,j,k; end; return nil; else if((liczba)and(liczba2)and(liczba<liczba2))then return;end; local liczba_start=liczba2 or 1; local a,b,c,d,e,f,g,h,i,j,k=nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil; while(true)do local a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1=mw.ustring.find(str,wzor,liczba_start); if((a1)and(b1)and(a1>b1))then return;end; if((not b1)or((b1)and(b1>liczba)))then return a,b,c,d,e,f,g,h,i,j,k; elseif((b1)and(b1==liczba))then return a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; end; a,b,c,d,e,f,g,h,i,j,k=a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1; if(not jak)then if(a1==b1)then liczba_start=b1+1; else liczba_start=b1; end; else liczba_start=b1+1; end; end; end; end; function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); while(true)do local liczba_start_szablon,liczba_koniec_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,szablon_normy_kodowania_szablonu,liczba_obiekt_start_od_tylu,liczba_start,true); if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local obiekt="SZABLON"; local kod=kod_szablon and tonumber(kod_szablon) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; ---- local liczba_koniec_szablon,norma_wzoru=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,"",function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if(nazwa_szablonu=="Licencja")then return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod); end; end); if(liczba_koniec_szablon)then return liczba_koniec_szablon,norma_wzoru; end; elseif(not liczba_start_szablon)then return nil; end; end; end; function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba,liczba2,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local techniczne_modul=require("Module:Techniczne"); local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local liczba_start_szablon;local liczba_koniec_szablon; local liczba_wys_szablon=liczba; local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"); local spis_naglowka_szablon; local spis_naglowka_szablon_stare; while(true)do local kod; liczba_start_szablon,liczba_koniec_szablon,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_szablonu,liczba_wys_szablon,liczba2,czy_od_tylu); if(liczba_start_szablon)then if(not czy_od_tylu)then liczba_wys_szablon=liczba_koniec_szablon;else liczba_wys_szablon=liczba_start_szablon;end; local obiekt="SZABLON"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) local liczba_szablon_centrowany=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(liczba_szablon_centrowany)then local naglowek=tabela_parametrow_szablonu[liczba_szablon_centrowany]; if(naglowek)then if(not mw.ustring.match(naglowek,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_szablon_stare=naglowek; spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_szablon))then return false; end; else spis_naglowka_szablon=naglowek; return false; end; end; end; end; return true; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return true; end); if(not wynik)then break; end; else break; end; end; local liczba_start_znacznik;local liczba_koniec_znacznik; local liczba_wys_znacznik=liczba; local norma_kodowania_znacznika=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK"); local spis_naglowka_znacznik; local spis_naglowka_znacznik_stare; while(true)do local kod; liczba_start_znacznik,liczba_koniec_znacznik,kod=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,norma_kodowania_znacznika,liczba_wys_znacznik,liczba2,czy_od_tylu); if(liczba_start_znacznik)then if(not czy_od_tylu)then liczba_wys_znacznik=liczba_koniec_znacznik;else liczba_wys_znacznik=liczba_start_znacznik;end; local obiekt="ZNACZNIK"; kod=kod and tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then if(zawartosc)then if(not mw.ustring.match(zawartosc,"^%s*%d+%s*/%s*%d+%s*$"))then if(czy_spis_tresci)then spis_naglowka_znacznik_stare=zawartosc; spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(zawartosc,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; if(czy_spis_tresci(spis_naglowka_znacznik))then break; end; else spis_naglowka_znacznik=zawartosc; break; end; end; end; end; else break; end; end; local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local liczba_start_dodatni;local liczba_koniec_dodatni; local liczba_wys_dodatni=liczba; local spis_naglowka_dodatni; local spis_naglowka_dodatni_stare; local spis_naglowka_poziom; while(true)do local naglowek; liczba_start_dodatni,liczba_koniec_dodatni,naglowek=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*",liczba_wys_dodatni,liczba2,czy_od_tylu); if(not liczba_start_dodatni)then break;end; if(not czy_od_tylu)then liczba_wys_dodatni=liczba_koniec_dodatni;else liczba_wys_dodatni=liczba_start_dodatni;end; local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek); if(naglowek)then if(czy_spis_tresci)then spis_naglowka_dodatni_stare=naglowek; spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; spis_naglowka_poziom=poziom_naglowka; if(czy_spis_tresci(spis_naglowka_dodatni))then break; end; else spis_naglowka_dodatni=naglowek; spis_naglowka_poziom=poziom_naglowka; break; end; end; end; if((liczba_start_szablon)or(liczba_start_znacznik)or(liczba_start_dodatni))then local _max_min; if(czy_od_tylu)then _max_min=math.max(math.max(liczba_start_szablon or 0,liczba_start_znacznik or 0),liczba_start_dodatni or 0); else _max_min=math.min(math.min(liczba_start_szablon or #tekst_rozwiniety_calego_artykulu,liczba_start_znacznik or #tekst_rozwiniety_calego_artykulu),liczba_start_dodatni or #tekst_rozwiniety_calego_artykulu); end; if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then local spis_naglowka_szablon_stare=spis_naglowka_szablon_stare or spis_naglowka_szablon; if((not czy_spis_tresci)and(spis_naglowka_szablon))then spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_szablon=parametry_modul["Odstępy"]{[1]=spis_naglowka_szablon,[2]="tak",}; end; return liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon,spis_naglowka_szablon_stare,nil; elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then local spis_naglowka_znacznik_stare=spis_naglowka_znacznik_stare or spis_naglowka_znacznik; if((not czy_spis_tresci)and(spis_naglowka_znacznik))then spis_naglowka_znacznik=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_znacznik,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_znacznik=parametry_modul["Odstępy"]{[1]=spis_naglowka_znacznik,[2]="tak",}; end; return liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik,spis_naglowka_znacznik_stare,nil; elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then local spis_naglowka_dodatni_stare=spis_naglowka_dodatni_stare or spis_naglowka_dodatni; if((not czy_spis_tresci)and(spis_naglowka_dodatni))then spis_naglowka_dodatni=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka_dodatni,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) spis_naglowka_dodatni=parametry_modul["Odstępy"]{[1]=spis_naglowka_dodatni,[2]="tak",}; end; return liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_poziom; end; end; return nil; end; function p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) local szablonowe_modul=require("Module:Szablonowe"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablony_wprowadzenia_napisu_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_wprowadzenia_napisu_spisu_rzeczy; local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local linki=function(zawartosc) local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(zawartosc,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="LINKW")or(obiekt=="LINKZ"))then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; elseif(obiekt=="SZABLON")then local szablon,obiekt,kod,dalszy_tekst=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) if((stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) or(stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]) )then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod); if(tab_szablon_link_intelignetny)then local dalszy_tekst=mw.ustring.match(zawartosc,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod).."(.*)$"); return szablon,obiekt,kod,dalszy_tekst; end; end); return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; if(obiekt=="SZABLON")then local szablon,obiekt,kod=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow) local czy_ce=szablony_wprowadzenia_napisu_spisu_rzeczy[nazwa_szablonu]; if(not czy_ce)then return nil;end; local zawartosc=tabela_parametrow_szablonu[czy_ce]; if(not zawartosc)then return nil;end; local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end); return szablon,obiekt,kod; elseif(obiekt=="ZNACZNIK")then local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod); if(zawartosc)then if((nazwa=="center")or(znaczniki_wprowadzenia_tekstu[nazwa]))then local szablon,obiekt,kod,dalszy_tekst=linki(zawartosc); if((szablon)and(obiekt)and(kod))then return szablon,obiekt,kod,dalszy_tekst; end; return nil; end; end; return nil; end; end; function p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_spis,liczba_start_tekst,liczba2,czy_od_tylu) local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; local a1;local a2;local a3;local a4;local a5;local a6;local a7;local a8;local a9;local a10; local dlugosc_tekstu_wyszukiwanego=#tekst_rozwiniety_calego_artykulu; if(not czy_od_tylu)then if((not liczba_start_tekst)or(liczba_start_tekst==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,false); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==1))and((not liczba2)or(liczba2==dlugosc_tekstu_wyszukiwanego)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,false); end; end; end; end; else if(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); if(not liczba_start_rozdzial)then if((not liczba2)or(liczba2==1))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*\n",liczba_start_tekst,liczba2,true); end; if(not liczba_start_rozdzial)then if(((not liczba_start_tekst)or(liczba_start_tekst==dlugosc_tekstu_wyszukiwanego))and((not liczba2)or(liczba2==1)))then liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^"..wzor_spis.."[^%S\n]*$",liczba_start_tekst,liczba2,true); end; end; end; end; end; return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10; end; function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do --czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then return true; elseif((not czy_element_spisu)and(numer_rodzaju_artykulu))then tak=true; elseif(czy_okladka)then tak=true; end; end; end; return (not tak); end; function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek+1,liczba_obiekt_start_nowe-1); if((mw.ustring.match(str,"^%s*'+(.+)'+%s*$")) or(mw.ustring.match(str,"^[%*#:;<>]+.*$") or(mw.ustring.match(str,"^[%s%p%w]*$"))) )then return nil;end; local ile_punktowanych=0; local szablonowe_modul=require("Module:Szablonowe"); local _,ile=mw.ustring.gsub(str,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[%*#;:<>]"))or(mw.ustring.match(linia,"^%s*$")))then ile_punktowanych=ile_punktowanych+1; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(numer_rodzaju_artykulu>2))then ile_punktowanych=ile_punktowanych+1; break; end; end; end; end); if(ile_punktowanych>=ile)then return nil; end; str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then if(czy_zeruj)then tab_zmienne.liczba_nie_okladka_artykul=nil; tab_zmienne.liczba_pierwszy_rozdzialowy_artykul=nil; tab_zmienne.czy_ten_rozdzial=nil; --tab_zmienne={["liczba_nie_okladka_artykul"]=liczba_nie_okladka_artykul,["liczba_pierwszy_rozdzialowy_artykul"]=liczba_pierwszy_rozdzialowy_artykul,["czy_ten_rozdzial"]=czy_ten_rozdzial,} end; return true; end; end; return nil; end; end; function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe) local odtylu=liczba_obiekt_start_spac_par; local liczba_start_naglowek;local liczba_koniec_naglowek;local naglowek;local poziom_naglowka; local liczba_start_naglowek_dalej;local liczba_koniec_naglowek_dalej;local naglowek_dalej;local poziom_naglowka_dalej; local czy_fun=false; local czy_pierwszy=nil; local liczba_koniec_naglowek_poczt=nil; while(true)do local liczba_start_naglowek_nowe;local liczba_koniec_naglowek_nowe;local naglowek_nowe;local poziom_naglowka_nowe; if(czy_dodatni==1)then local _; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,_,poziom_naglowka_nowe=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); elseif(czy_dodatni==2)then local str_lista_naglowek; liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,str_lista_naglowek,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*#:;<>]+)[^%S\n]*([^\n]-)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and (-#str_lista_naglowek) or nil; else liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*#:;<>\n][^%S\n]*[^\n]-:)",odtylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); poziom_naglowka_nowe=liczba_start_naglowek_nowe and 0 or nil; end; if(not liczba_start_naglowek_nowe)then break; else poziom_naglowka_nowe=(czy_dodatni==1)and (poziom_naglowka_nowe or 2) or poziom_naglowka_nowe; local czy_tak_spisowe=(czy_dodatni==1) and true or p.CzyTamElementyNieSpisoweArtykularne(mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe),nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); if(czy_tak_spisowe)then if(not czy_pierwszy)then liczba_koniec_naglowek_poczt=liczba_koniec_naglowek_nowe; czy_pierwszy=true; end; if(liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe<liczba_start_naglowek)then if(liczba_koniec_naglowek_nowe+1<=liczba_start_naglowek-1)then local pomiedzy_naglowkami=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_start_naglowek-1); if((pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$")) and((czy_dodatni==1) and( ((poziom_naglowka_nowe)and(not poziom_naglowka)) or( ((poziom_naglowka_nowe)and(poziom_naglowka)) and(poziom_naglowka_nowe>=poziom_naglowka) ) ) or( ((czy_dodatni==2)and(poziom_naglowka_nowe<=poziom_naglowka)) or((czy_dodatni~=1)and(czy_dodatni~=2)) ) ) )then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; elseif(liczba_start_naglowek~=liczba_koniec_naglowek_nowe)then liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; break; end; end; if(((czy_dodatni==1)or(czy_dodatni==2))and(AnalizowanieSekcjowe)and(not czy_fun))then local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek_nowe); if(not spis_tresci)then --local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); local czy_wynik=AnalizowanieSekcjowe(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe); if(czy_wynik)then return false;end; end; czy_fun=true; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_nowe,liczba_koniec_naglowek_nowe,naglowek_nowe,poziom_naglowka_nowe; end; end; odtylu=liczba_start_naglowek_nowe; end; return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej; end function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe) local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka,liczba_start_naglowek_dalej=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,1,czy_bez_naglowka,AnalizowanieSekcjowe); ---- if((AnalizowanieSekcjowe)and(liczba_start_naglowek==false))then return nil;end; ---- local str_spacja_lub_zerowy_naglowek=function(tekst) local ile_znalezione_linie_wedlug_wzoru=0; local _,ile=mw.ustring.gsub(tekst,"([^\n]+)",function(linia) if((mw.ustring.match(linia,"^[^%*#:;<>\n].-:%s*$"))or(mw.ustring.match(linia,"^%s*$")))then ile_znalezione_linie_wedlug_wzoru=ile_znalezione_linie_wedlug_wzoru+1; end; return nil; end); if(ile==ile_znalezione_linie_wedlug_wzoru)then return true;end; return nil; end; if((not liczba_start_naglowek_dalej)and(liczba_start_naglowek))then local liczba_szukaj_odtylu_tekst=liczba_start_naglowek; local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]+)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(not liczba_start_rozdzial)then while(true)do local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_start_naglowek,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp,liczba_start_naglowek); if(not str_spacja_lub_zerowy_naglowek(str))then break; end; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; if(not liczba_start_naglowek_temp)then break;end; end; end; elseif(not liczba_start_naglowek)then local liczba_szukaj_odtylu_tekst=liczba_obiekt_start_kolei_par; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+([^\n]-[^'\n][^\n]-)''+",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); if(liczba_start_naglowek_temp)then local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści") local spis_naglowka_szablon=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek_temp,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not mw.ustring.match(spis_naglowka_szablon,"!%s*$")and(not mw.ustring.match(spis_naglowka_szablon,"%S!")))then ---- local tak=false; local czy_w_petli=false; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(naglowek_temp,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do czy_w_petli=true; if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then if(numer_rodzaju_artykulu==1)then tak=true; break; end; end; end; end; if((tak)or(not czy_w_petli))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,0; end; end; else local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,2,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; liczba_obiekt_start_kolei_par=liczba_start_naglowek; end; end; local liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp,liczba_start_naglowek_dalej_temp=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,3,czy_bez_naglowka,nil); if(liczba_start_naglowek_temp)then if(liczba_koniec_naglowek_temp+1<=liczba_obiekt_start_kolei_par-1)then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_temp+1,liczba_obiekt_start_kolei_par-1); if(mw.ustring.match(str,"^%s*$"))then liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; else liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=liczba_start_naglowek_temp,liczba_koniec_naglowek_temp,naglowek_temp,poziom_naglowka_temp; end; end; end; end; return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka; end; function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul) local liczba_spac=0; if(liczba_start)then local liczba_start_tekst=liczba_start;local liczba_koniec_tekst;local linia; while(true)do local liczba_start_tekst_stare=liczba_start_tekst; linia=nil local liczba_szukaj_odtylu_tekst=liczba_start_tekst; liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); local czy_poczt; if(not liczba_start_tekst)then liczba_start_tekst,liczba_koniec_tekst,linia=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"^([^%*#:;<>\n][^\n]*)\n",liczba_szukaj_odtylu_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); czy_poczt=true; else czy_poczt=false; end; local rozdzial_dodatki=linia and mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$") or nil; if(rozdzial_dodatki)then local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then return (czy_dalej_rozdzial)and liczba_start or liczba_koniec_tekst,liczba_spac; end; end; local spacja=linia and mw.ustring.match(linia,"^%s*$") or nil; if(spacja)then liczba_spac=liczba_spac+#linia+(czy_poczt and 1 or 2); elseif((not spacja)and(linia))then local czy_spis=nil; local spis_tresci=p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,true); local liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=nil,nil,nil; if(not spis_tresci)then liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial=p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_start_tekst,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_rozdzial or ((mw.ustring.match(linia,"^[^\n]+:[^%S\n]*$")) and liczba_start_tekst or liczba_koniec_tekst); czy_spis=liczba_start_rozdzial and true or nil; else liczba_start=--[[spis_tresci and]] liczba_start_tekst--[[ or liczba_koniec_tekst]]; czy_spis=true; end; if(not liczba_start_rozdzial)then if(not spis_tresci)then local szablonowe_modul=require("Module:Szablonowe"); if(mw.ustring.match(linia,szablonowe_modul.NormaWzoruKodowaniaTekstu()))then local tak=false; local czy_okladka=nil; local szablonowe_modul=require("Module:Szablonowe"); local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(not czy_okladka))then tak=true; break; end; end; end; liczba_start=tak and liczba_start_tekst or liczba_start; else liczba_start=liczba_koniec_tekst; end; else liczba_start=--[[spis_tresci and ]]liczba_start_tekst--[[ or liczba_koniec_tekst]]; end; end; return liczba_start,liczba_spac,czy_spis; elseif(not liczba_start_tekst)then return (czy_dalej_rozdzial)and liczba_start or math.min(liczba_pierwszy_rozdzialowy_artykul or 1,liczba_start),liczba_spac,nil; end; end; end; return liczba_start,liczba_spac,nil; end; function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa) local liczba_spisu=liczba_spisowa; local szablonowe_modul=require("Module:Szablonowe"); local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu() while(true)do local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,"\n[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); --- if((liczba_linki_nierozdzialowe_szablonu) and( (przed_tekst=="") or(mw.ustring.match(przed_tekst,"^[%p%s%d%.]*$")) ) )then liczba_spisu=liczba_linki_nierozdzialowe_szablonu; if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; ---- local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); ---- ---- if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; else local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(dalszy_tekst,nil,tablica_analizy_obiektow_strony_dany_modul); local szablon_obiekt_temp,szablon_kod_temp=obiekt_szablon,kod_szablon; for szablon,obiekt,kod in iterator do local czy_znajdz=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_znajdz)then local czy_tekst=mw.ustring.match(dalszy_tekst,szablonowe_modul.NormaWzoruKodowaniaTekstu(szablon_obiekt_temp,szablon_kod_temp).."[%p%s%d%.]*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)); if(czy_tekst)then if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or(numer_rodzaju_artykulu>1)))then return liczba_linki_nierozdzialowe_szablonu,true; end; end; else return liczba_spisowa,false; end; szablon_obiekt_temp,szablon_kod_temp=obiekt,kod; end; end; return liczba_spisowa,false; end; end; else return liczba_spisowa,false; end; end; end; function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local tak=nil; local techniczne_modul=require("Module:Techniczne"); local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,1,nil,false,function(naglowek) naglowek=techniczne_modul.UsuwanieZnakoweKontrolneNiewidzialne(naglowek); if(mw.ustring.match(naglowek,"^"..tab_wzor[1].."$"))then return true; end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(not liczba_rozdzial_start)then liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"("..tab_wzor[1]..")",liczba_rozdzial_koniec,nil,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)then tak=true;end; end; if(liczba_rozdzial_start)then local liczba_rozdzial_start2,liczba_rozdzial_koniec2; if(not tak)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); else local liczba_rozdzial_start3,liczba_rozdzial_koniec3=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst,liczba_rozdzial_koniec,nil,false,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local liczba_rozdzial_start4,liczba_rozdzial_koniec4=p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst,"[^%*#;:<>\n]+[^\n]+",liczba_rozdzial_koniec,nil,true,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); ---- if((liczba_rozdzial_start3)and(liczba_rozdzial_start4))then if(liczba_rozdzial_start3<liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; end; elseif(liczba_rozdzial_start3)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start3,liczba_rozdzial_koniec3; elseif(liczba_rozdzial_start4)then liczba_rozdzial_start2,liczba_rozdzial_koniec2=liczba_rozdzial_start4,liczba_rozdzial_koniec4; else liczba_rozdzial_start2,liczba_rozdzial_koniec2=nil,nil; end; end; ----- local str_bibliografia=mw.ustring.sub(tekst,liczba_rozdzial_koniec+1,(liczba_rozdzial_start2 and (liczba_rozdzial_start2-1) or #tekst)); if((not str_bibliografia)or(str_bibliografia==""))then return tekst;end; local tekst1=mw.ustring.sub(tekst,1,liczba_rozdzial_koniec); local tekst2=liczba_rozdzial_start2 and mw.ustring.sub(tekst,liczba_rozdzial_start2,#tekst) or ""; ----- local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); local szablonowe_modul=require("Module:Szablonowe"); local techniczne_modul=require("Module:Techniczne"); str_bibliografia=mw.ustring.gsub(str_bibliografia,"([^\n]+)",function(linia) local obiekt,kod,dalszy_tekst=mw.ustring.match(linia,"^[%*:;#<>]+%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu().."([^\n]*)$"); if((obiekt)and(kod)and(dalszy_tekst))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_okladka)and(czy_element_spisu)and(numer_rodzaju_artykulu==1))then return linia; end; end; linia=dalszy_tekst or linia; local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nil,tablica_analizy_obiektow_strony_dany_modul); for szablon,obiekt,kod in iterator do if(((tab_wzor[2])and((obiekt=="LINKW")or(obiekt=="LINKZ")))or(obiekt=="SZABLON"))then local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if(czy_element_spisu)then return linia; elseif(obiekt=="SZABLON")then local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) if((stronicowyparser_obiekty_modul.szablony_przypisowe[nazwa_szablonu])or(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu]))then return linia; else return ""; end; end,nil,nil,nil,nil,nil,nil,nil,nil, function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod) return ""; end); return wynik; end; end; end; return ""; end); tekst=tekst1..str_bibliografia..tekst2; end; return tekst; end; function p.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych) local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały"); local czy_uruchomiony_analizator_spisu_rzeczy_strony=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony(); if(not czy_uruchomiony_analizator_spisu_rzeczy_strony)then return nil;end; ---- local liczba_start=nil;local liczba_koniec=nil; ---- local szablonowe_modul=require("Module:Szablonowe"); local parametry_modul=require("Module:Parametry"); local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty"); ----- local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(); ---- local liczba_obiekt_koniec=1; local liczba_pierwszy_rozdzialowy_artykul=nil; local liczba_nie_okladka_artykul=nil; local tab_nazwa_spisow_przekierowaniowych={}; local liczba_start_rozdzial=1; local liczba_obiekt_start_poprz=nil; local liczba_obiekt_koniec_poprz=nil; local liczba_nie_okladka_artykul_koniec=nil; local wzor_szablonu_list="([%*:#;<>]*)([^%S\n]*)([^\n]-)[^%S\n]*[\'\"]*[^%S\n]*"..szablon_normy_kodowania_szablonu.."[^%S\n]*[\'\"]*[^%S\n]*([^\n]-)[^%S\n]*"; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,odstepy_poczatku_rozdzialu,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,wzor_szablonu_list,liczba_obiekt_koniec,nil,false); if(liczba_start_szablon)then liczba_obiekt_koniec=liczba_koniec_szablon; --local czy_rozdzial_dodatni=((lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local czy_rozdzial_dodatni; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=((czy_dobry_obiekt)and(((lista_szablon~="")and((przerwa_szablon=="")or((mw.ustring.match(lista_szablon,"^:"))and((przerwa_szablon==">")or(przerwa_szablon=="<")))or(not mw.ustring.match(lista_szablon,"^:"))))or((lista_szablon=="")and(przerwa_szablon=="")and(not mw.ustring.match(dalszy_tekst,"^>"))))); czy_listy=czy_listy or ((czy_dobry_obiekt)and(lista_szablon=="")and(odstepy_poczatku_rozdzialu=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((not czy_element_spisu)or(czy_okladka))then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) local czy_element_spisu_temp;local numer_rodzaju_artykulu_temp;local czy_podrecznik_temp;local czy_okladka_temp; local tak=false; for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,false,true); if((czy_element_spisu_temp)and(not czy_okladka_temp))then if(numer_rodzaju_artykulu_temp==1)then tak=true; break; end; end; end; end; if(tak)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka=czy_element_spisu_temp,numer_rodzaju_artykulu_temp,czy_podrecznik_temp,czy_okladka_temp; end; end; liczba_pierwszy_rozdzialowy_artykul=(not liczba_pierwszy_rozdzialowy_artykul)and(czy_element_spisu and liczba_obiekt_start or nil) or liczba_pierwszy_rozdzialowy_artykul; liczba_nie_okladka_artykul=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and(dalszy_tekst=="")))))) and liczba_obiekt_start or liczba_nie_okladka_artykul; liczba_nie_okladka_artykul_koniec=((not liczba_nie_okladka_artykul)and((czy_element_spisu)and(((numer_rodzaju_artykulu==1)and(not czy_okladka))or((numer_rodzaju_artykulu>=2)and((lista_szablon)and(lista_szablon~="") and (przerwa_szablon=="") and (dalszy_tekst=="")))))) and liczba_obiekt_koniec or liczba_nie_okladka_artykul_koniec; ---- if((czy_element_spisu)and(numer_rodzaju_artykulu==1)and(czy_podrecznik)and(not czy_okladka))then local czy_bez_naglowka=nil; local liczba_obiekt_start_nowe=liczba_nie_okladka_artykul or liczba_obiekt_start; local liczba_obiekt_koniec_nowe=liczba_nie_okladka_artykul_koniec or liczba_obiekt_koniec; local liczba_start_naglowek,liczba_koniec_naglowek,naglowek=nil,nil,nil; local czy_ten_rozdzial=true; local liczba_obiekt_start_nowe_temp=liczba_obiekt_start_nowe; local liczba_spis_tresci_start,liczba_spis_tresci_koniec,naglowka_dodatni_start,spis_naglowka_dodatni_stare_start,poziom_naglowka_start=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_obiekt_start_nowe,liczba_start_rozdzial,true,function(naglowek) if(p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(naglowek))then return true;end; end,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); local czy_zeruj=(not liczba_spis_tresci_start)and true or false; liczba_obiekt_start_nowe=liczba_spis_tresci_start or liczba_obiekt_start_nowe; local tab_zmienne={ liczba_nie_okladka_artykul=liczba_nie_okladka_artykul, liczba_pierwszy_rozdzialowy_artykul=liczba_pierwszy_rozdzialowy_artykul, czy_ten_rozdzial=czy_ten_rozdzial, }; liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; if(not czy_ten_rozdzial)then if(liczba_obiekt_start~=liczba_obiekt_start_nowe_temp)then liczba_start_rozdzial=liczba_obiekt_start_nowe_temp; liczba_obiekt_start_nowe=liczba_obiekt_start; czy_ten_rozdzial=true; tab_zmienne.czy_ten_rozdzial=czy_ten_rozdzial; liczba_start_naglowek,liczba_koniec_naglowek,naglowek=p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start,czy_bez_naglowka,p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)); liczba_nie_okladka_artykul,liczba_pierwszy_rozdzialowy_artykul,czy_ten_rozdzial=tab_zmienne.liczba_nie_okladka_artykul,tab_zmienne.liczba_pierwszy_rozdzialowy_artykul,tab_zmienne.czy_ten_rozdzial; end; end; ---- jest to pozycja nagłówka, która mówi, który nagłówek ma być pierwszy, czy ten od spisu treści, czy ten dalszy; liczba_start_naglowek=( (not liczba_spis_tresci_start) or((liczba_spis_tresci_start)and(not poziom_naglowka_start)) -- nagłówek spisu tresci centrowany; -- nagłówki oba dodatnie niecentrowane, oba ujemne lub ten pierwszy dodatni, a drugi ujemny, a pierwszy dodatni; or((poziom_naglowka_start)and(poziom_naglowka))and( ((poziom_naglowka_start>0)and(poziom_naglowka<=0)) or((poziom_naglowka_start<=0)and(poziom_naglowka<=0)and(poziom_naglowka_start>=poziom_naglowka)) or((poziom_naglowka_start>0)and(poziom_naglowka>0)and(poziom_naglowka_start<=poziom_naglowka)) ) ) and liczba_spis_tresci_start or liczba_start_naglowek; ---- if(((not czy_okladka)or((czy_okladka)and(lista_szablon~=""))or(liczba_start_naglowek))and(czy_ten_rozdzial))then ---- czy_bez_naglowka=((not liczba_start_naglowek)or((liczba_obiekt_koniec_poprz or 1)<=(liczba_start_rozdzial or 1))) and true or false; ---- if(liczba_start_naglowek)then local liczba_przed_rozdzialem;local czy_znajdz; liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start_naglowek); local odtylu_dalej=--[[liczba_spis_tresci or]] liczba_start_naglowek; local liczba_start_naglowek_przed=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,odtylu_dalej,liczba_start_rozdzial,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_start_naglowek_przed)then if(liczba_przed_rozdzialem>=liczba_start_naglowek_przed)then liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; else liczba_start=liczba_spis_tresci; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,true,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then if(liczba_start_sugerowane>liczba_start_naglowek_przed)then liczba_start=liczba_start_sugerowane; local liczba_start_od_tylu=liczba_start; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); if(liczba_start_nowa)then if(liczba_start_nowa>liczba_start_naglowek_przed)then liczba_start=liczba_start_nowa; end; end; end; end; end; else liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,liczba_start_rozdzial,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; else liczba_start=liczba_start_sugerowane; end; end; else local liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka=p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_nowe,2,czy_bez_naglowka,function(liczba_koniec_naglowek_nowe,liczba_obiekt_start_nowe) if((liczba_koniec_naglowek_nowe)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek_nowe+1<=liczba_obiekt_start_nowe-1))then local str=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_koniec_naglowek_nowe+1,liczba_obiekt_start_nowe-1); str=mw.ustring.gsub(str,szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON"),""); if(not mw.ustring.match(str,"^%s*$"))then return true; end; end; return nil; end); if(liczba_start_naglowek)then liczba_obiekt_start_nowe=liczba_start_naglowek; end; --[[]] local liczba_przed_rozdzialem,czy_znajdz=p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_obiekt_start_nowe); liczba_start=liczba_przed_rozdzialem; local liczba_start_sugerowane,liczba_spac,czy_spis=p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,false,liczba_pierwszy_rozdzialowy_artykul); if(czy_spis)then liczba_start=liczba_start_sugerowane; break; elseif(not czy_znajdz)then liczba_start=liczba_przed_rozdzialem; break; end; if(liczba_start_sugerowane<liczba_start-liczba_spac)then local liczba_start_od_tylu=liczba_start_sugerowane; local liczba_start_nowa=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"''+[^\n]*[^'][^\n]*''+",liczba_start_od_tylu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true); liczba_start=liczba_start_nowa or liczba_start_sugerowane; end; end; break; else liczba_start_rozdzial=liczba_obiekt_koniec_nowe; liczba_nie_okladka_artykul_koniec=nil; end; liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; else liczba_obiekt_koniec_poprz=((czy_element_spisu)and(numer_rodzaju_artykulu<=2)) and liczba_obiekt_koniec or liczba_obiekt_koniec_poprz; end; end; else break; end; end; if(not liczba_start)then return "";end; local liczba_obiekt_start_od_tylu=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_start_szablon,liczba_koniec_szablon,lista_szablon,przerwa_szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([%*:#;<>]?)([^\n]-)"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_obiekt_start_od_tylu,liczba_start,true); ---- if(liczba_start_szablon)then liczba_obiekt_start_od_tylu=liczba_start_szablon; local czy_dobry_obiekt=((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ")); local czy_listy=(czy_dobry_obiekt)and((lista_szablon~="")or((lista_szablon=="")and(przerwa_szablon==""))); local czy_listy=czy_listy or (czy_dobry_obiekt)and((lista_szablon=="")and(mw.ustring.match(przerwa_szablon,"^=+")and(mw.ustring.match(dalszy_tekst,"=+%s*$")))); local szablon; if(not czy_listy)then local obiekt=obiekt_szablon;local kod=tonumber(kod_szablon) or nil; szablon,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu(obiekt,kod,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(szablon)then czy_listy=true;end; end; if(czy_listy)then local liczba_obiekt_koniec=liczba_koniec_szablon; local liczba_obiekt_start=liczba_start_szablon; local obiekt=obiekt_szablon; local kod=kod_szablon; kod=tonumber(kod) or nil; local szablon=szablon or tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element_spisu=nil;local numer_rodzaju_artykulu=nil;local czy_podrecznik=nil; if(liczba_start<=liczba_obiekt_start)then czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(not czy_element_spisu)then local iterator=mw.ustring.gmatch(dalszy_tekst,szablon_normy_kodowania_szablonu) for obiekt,kod in iterator do if((obiekt=="SZABLON")or(obiekt=="LINKW")or(obiekt=="LINKZ"))then kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; --if(((not czy_spis_tresci)and(lista_szablon~=""))or((czy_spis_tresci)and((lista_szablon=="")and(przerwa_szablon==""))))then czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---elseif((lista_szablon=="")and(przerwa_szablon==""))then ---czy_element_spisu,numer_rodzaju_artykulu=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); ---end; if(czy_element_spisu)then break;end; end; end; end; end; if(czy_element_spisu)then local function IleKoniec() while(true)do local poczatek_nierozdzalowe=liczba_obiekt_koniec; local liczba_start_nieszablon_nielink_nierozdzialowa,liczba_koniec_nieszablon_nielink_nierozdzialowa,linia=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"([^%*:;#<>'\n]+[^\n]*)",poczatek_nierozdzalowe,nil,false) if(liczba_start_nieszablon_nielink_nierozdzialowa)then local rozdzial_dodatki=mw.ustring.match(linia,"^(=+([^\n]*[^=\n][^\n]*)=+)[^%S\n]*$"); if(rozdzial_dodatki)then local naglowek=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial_dodatki); if(naglowek)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; end; end; local czy_spacje=mw.ustring.match(linia,"^%s*$"); if(not czy_spacje)then liczba_koniec=liczba_start_nieszablon_nielink_nierozdzialowa; return; elseif(czy_spacje)then liczba_obiekt_koniec=liczba_koniec_nieszablon_nielink_nierozdzialowa; --else -- liczba_koniec=#tekst_rozwiniety_calego_artykulu; -- return; end; else liczba_koniec=#tekst_rozwiniety_calego_artykulu; break; end; end; end; IleKoniec(); break; end; end; else break; end; end; if(liczba_koniec)then local koniec_dodatnie_rozdzialy=#tekst_rozwiniety_calego_artykulu; while(true)do local liczba_rozdzial_start,liczba_rozdzial_koniec,rozdzial_nazwa,rozdzial=p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,koniec_dodatnie_rozdzialy,liczba_start,true,false,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if(liczba_rozdzial_start)and(liczba_rozdzial_start>=liczba_koniec)then koniec_dodatnie_rozdzialy=liczba_rozdzial_start; local start=1; while(true)do local start_szablon,koniec_szablon,obiekt_szablon,kod_szablon=p.SzukanieNaPodstawieWzoru(rozdzial,szablon_normy_kodowania_szablonu,start); local koniec_obiekt;local kod_obiekt;local obiekt=nil; if(start_szablon)then if((obiekt_szablon=="SZABLON")or(obiekt_szablon=="LINKW")or(obiekt_szablon=="LINKZ"))then --koniec_obiekt=koniec_szablon; local kod=kod_szablon; local obiekt=obiekt_szablon; local kod=tonumber(kod) or nil; local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]; local czy_element=p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,true,true); if(czy_element)then liczba_koniec=liczba_rozdzial_koniec; break; end; end; start=koniec_szablon; else break; end; end; else break; end; end; end; if(not liczba_koniec)then return "";end; if(liczba_start>=liczba_koniec)then return "";end; --- Licencja ---- local licencja_koniec,szablon_licencja=p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_koniec,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony); if((licencja_koniec)and(licencja_koniec>=liczba_koniec))then liczba_koniec=licencja_koniec; end; ----- local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); ----- for _,tab_wzor in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe)do tekst=p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych); end; --mw.log(tekst) --- Licencja ---- --mw.log(liczba_start,liczba_koniec,"TYTANw",pelna_nazwa_spisu_tresci_szablonowa) --mw.log("TYTAN1",tekst,"TYTAN2") --return nil; --local tekst=mw.ustring.sub(tekst_rozwiniety_calego_artykulu,liczba_start,liczba_koniec); return tekst; end; return p; bul7324bk9ps7zawbowcyr02b3dxdbx Szablon:NawigacjaSpecjalna/Nawigacja/Pomoc:Spis treści 10 61114 551604 551488 2026-08-12T13:48:42Z Persino 2851 551604 wikitext text/x-wiki <includeonly>{{Układ autonawigacji|krok={{{1}}} |automat manualny=tak |spis treści=Pomoc:Spis treści |Pomoc:Spis treści|Pomoc - Spis treści |Pomoc:Spis treści/Wstęp|Wstęp |Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy |Wikibooks:Zasady i wskazówki|Zasady i wskazówki |Wikibooks:Szybka pomoc|Szybka pomoc |Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks? |Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks |Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę? |Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników? |Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks? |Wikibooks:Wikietykieta|Wikietykieta |Pomoc:Wikietykieta|Wikietykieta |Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia |Pomoc:Żargon użytkowników|Żargon użytkowników |Wikibooks:Informacje prawne|Informacje prawne |Wikibooks:Prawa autorskie|Prawa autorskie |Pomoc:Spis treści/Edycja|Edycja |Wikibooks:Brudnopis|Brudnopis |Pomoc:Edycja kodu|Edycja kodu |Wikibooks:Import stron|Import stron |Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek |Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks |Pomoc:Jak edytować artykuły|Jak edytować artykuły? |Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów |Pomoc:Podświetlanie składni|Podświetlanie składni |Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami |Pomoc:Quiz|Quiz |Pomoc:Tworzenie podręcznika|Tworzenie podręcznika |Wikibooks:Wandalizm|Wandalizm |Wikibooks:Podręczniki do druku|Podręczniki do druku |Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku |Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF |Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex |Pomoc:Książki|Książki |Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca |Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie |Wikibooks:Wkład miesiąca/Wstęp|Wstęp |Wikibooks:Wkład miesiąca/Regulamin|Regulamin |Wikibooks:Wkład miesiąca/Nominacje|Nominacje |Pomoc:Spis treści/Komunikacja|Komunikacja |Wikibooks:Kanał IRC|Kanał IRC |Wikibooks:Kontakt|Kontakt |Wikibooks:Portal użytkowników|Portal użytkowników |Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji |Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne |Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks |Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks? |Wikibooks:Księgozbiór|Księgozbiór |Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane |Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie |Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie |Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom |Wikibooks:Księgozbiór/Status|Księgozbiór - Status |Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze |Portal:Informatyka|Portal - Informatyka |Portal:Nauki techniczne|Portal - Nauki techniczne |Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne |Portal:Sport i rozrywka|Portal - Sport i rozrywka |Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne |Wikibooks:Promocja|Promocja |Pomoc:Tryb ciemny|Tryb ciemny |Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks |Wikibooks:Historia Wikibooks|Historia Wikibooks |Wikibooks:Piąte urodziny|Piąte urodziny |Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks |Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009 |Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks |Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009 |Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011 |Wikibooks:Statystyki|Statystyki |Pomoc:Spis treści/Technikalia|Technikalia |Wikibooks:Przestrzenie nazw|Przestrzenie nazw |Wikibooks:Poczekalnia|Poczekalnia |Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa |Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje |Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły |Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne |Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia |Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione |Wikibooks:VisualEditor|VisualEditor |Pomoc:Nowa skórka – wektor|Nowa skórka – wektor |Wikibooks:Skróty|Skróty |Pomoc:Spis treści/Strona główna|Strona główna |Pomoc:Spis treści/Wybrane książki|Wybrane książki |Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki |Wikibooks:Szablony|Mechanizm MediaWiki - Szablony |Wikibooks:Moduły|Mechanizm MediaWiki - Moduły |Wikibooks:Moduły/Parametry|Moduł:Parametry |Wikibooks:Moduły/Html|Moduł:Html |Wikibooks:Moduły/Książkowe|Moduł:Książkowe |Wikibooks:Moduły/Nazwy|Moduł:Nazwy |Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I |Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II |Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III |Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV |Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np |Wikibooks:Moduły/Pudełko|Moduł:Pudełko |Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I |Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II |Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III |Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV |Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V |Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne |Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne |Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy |Wikibooks:Moduły/Ramka|Moduł:Ramka |Wikibooks:Moduły/Specjalne|Moduł:Specjalne |Wikibooks:Moduły/StronicowyParser|StronicowyParser |Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII |Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron |Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu |Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron |Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne |Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy |Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V |Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II |Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst |Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron |Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu |Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje |Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty |Wikibooks:Moduły/Szeregi|Moduł:Szeregi |Wikibooks:Moduły/Skrót|Moduł:Skrót |Wikibooks:Moduły/Strony|Moduł:Strony |Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna |Wikibooks:Szablony/Ogólne|Szablony - Ogólne |Wikibooks:Szablony/Informacje|Szablony - Informacje |Wikibooks:Szablony/PrzypisStrona|PrzypisStrona |Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe |Wikibooks:Szablony/Książkowe|Szablony - Książkowe |Wikibooks:Szablony/Tekst|Szablony - Tekst |Wikibooks:Szablony/Zawartość|Szablony - Zawartość |Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki |Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania |Wikibooks:Szablony/Języki|Szablony - Języki |Wikibooks:Szablony/Liczby|Szablony - Liczby |Wikibooks:Szablony/Kategorie|Szablony - Kategorie |Wikibooks:Szablony/Opisy|Szablony - Opisy |Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki |Wikibooks:Szablony/Szablony opływania|Szablony opływania |Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe |Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe |Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne |Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog |Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I |Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II |Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III |Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV |Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V |Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI |Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty |Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe) |Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe |Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów |Wikibooks:Szablony/Linki|Szablony - Linki |Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne |Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia |Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja |Wikibooks:Szablony/Media|Szablony - Media |Wikibooks:Szablony/Grafika|Szablony - Grafika |Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie |Wikibooks:Szablony/Techniczne|Szablony - Techniczne |Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta |Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty |Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki |Wikibooks:Szablony/Systemowe|Szablony - Systemowe |Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I |Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II |Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III |Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV |Pomoc:Spis treści/Administracja|Administracja |Wikibooks:Kwestie techniczne|Kwestie techniczne |Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy |Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB) |Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA) |Wikibooks:Administratorzy|Administratorzy |Wikibooks:Prośby do administratorów|Prośby do administratorów |Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu |Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu |Wikibooks:Biurokraci|Biurokraci |Wikibooks:Boty|Boty |Wikibooks:Stewardzi|Stewardzi |Wikibooks:Użytkownicy|Użytkownicy |Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy |Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy |Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień |Wikibooks:Nazwa użytkownika|Nazwa użytkownika |Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika |Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP |Wikibooks:GNU Free Documentation License|GNU Free Documentation License }}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude> q356ec0j5q34n9zstfqtsws56344wom 551605 551604 2026-08-12T13:51:25Z Persino 2851 551605 wikitext text/x-wiki <includeonly>{{Układ autonawigacji|krok={{{1}}} |automat manualny=tak |spis treści=Pomoc:Spis treści |Pomoc:Spis treści|Pomoc - Spis treści |Pomoc:Spis treści/Wstęp|Wstęp |Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy |Wikibooks:Zasady i wskazówki|Zasady i wskazówki |Wikibooks:Szybka pomoc|Szybka pomoc |Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks? |Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks |Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę? |Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników? |Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks? |Wikibooks:Wikietykieta|Wikietykieta |Pomoc:Wikietykieta|Wikietykieta |Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia |Pomoc:Żargon użytkowników|Żargon użytkowników |Wikibooks:Informacje prawne|Informacje prawne |Wikibooks:Prawa autorskie|Prawa autorskie |Pomoc:Spis treści/Edycja|Edycja |Wikibooks:Brudnopis|Brudnopis |Pomoc:Edycja kodu|Edycja kodu |Wikibooks:Import stron|Import stron |Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek |Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks |Pomoc:Jak edytować artykuły|Jak edytować artykuły? |Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów |Pomoc:Podświetlanie składni|Podświetlanie składni |Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami |Pomoc:Quiz|Quiz |Pomoc:Tworzenie podręcznika|Tworzenie podręcznika |Wikibooks:Wandalizm|Wandalizm |Wikibooks:Podręczniki do druku|Podręczniki do druku |Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku |Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF |Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex |Pomoc:Książki|Książki |Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca |Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie |Wikibooks:Wkład miesiąca/Wstęp|Wstęp |Wikibooks:Wkład miesiąca/Regulamin|Regulamin |Wikibooks:Wkład miesiąca/Nominacje|Nominacje |Pomoc:Spis treści/Komunikacja|Komunikacja |Wikibooks:Kanał IRC|Kanał IRC |Wikibooks:Kontakt|Kontakt |Wikibooks:Portal użytkowników|Portal użytkowników |Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji |Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne |Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks |Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks? |Wikibooks:Księgozbiór|Księgozbiór |Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane |Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie |Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie |Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom |Wikibooks:Księgozbiór/Status|Księgozbiór - Status |Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze |Portal:Informatyka|Portal - Informatyka |Portal:Nauki techniczne|Portal - Nauki techniczne |Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne |Portal:Sport i rozrywka|Portal - Sport i rozrywka |Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne |Wikibooks:Promocja|Promocja |Pomoc:Tryb ciemny|Tryb ciemny |Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks |Wikibooks:Historia Wikibooks|Historia Wikibooks |Wikibooks:Piąte urodziny|Piąte urodziny |Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks |Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009 |Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks |Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009 |Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011 |Wikibooks:Statystyki|Statystyki |Pomoc:Spis treści/Technikalia|Technikalia |Wikibooks:Przestrzenie nazw|Przestrzenie nazw |Wikibooks:Poczekalnia|Poczekalnia |Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa |Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje |Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły |Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne |Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia |Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione |Wikibooks:VisualEditor|VisualEditor |Pomoc:Nowa skórka – wektor|Nowa skórka – wektor |Wikibooks:Skróty|Skróty |Pomoc:Spis treści/Strona główna|Strona główna |Pomoc:Spis treści/Wybrane książki|Wybrane książki |Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki |Wikibooks:Szablony|Mechanizm MediaWiki - Szablony |Wikibooks:Moduły|Mechanizm MediaWiki - Moduły |Wikibooks:Moduły/Parametry|Moduł:Parametry |Wikibooks:Moduły/Html|Moduł:Html |Wikibooks:Moduły/Książkowe|Moduł:Książkowe |Wikibooks:Moduły/Nazwy|Moduł:Nazwy |Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I |Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II |Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III |Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV |Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np |Wikibooks:Moduły/Pudełko|Moduł:Pudełko |Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I |Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II |Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III |Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV |Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V |Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne |Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne |Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy |Wikibooks:Moduły/Ramka|Moduł:Ramka |Wikibooks:Moduły/Specjalne|Moduł:Specjalne |Wikibooks:Moduły/StronicowyParser|StronicowyParser |Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI |Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII |Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron |Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek |Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu |Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron |Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne |Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy |Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV |Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V |Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I |Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II |Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst |Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V |Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI |Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu |Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje |Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty |Wikibooks:Moduły/Szeregi|Moduł:Szeregi |Wikibooks:Moduły/Skrót|Moduł:Skrót |Wikibooks:Moduły/Strony|Moduł:Strony |Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna |Wikibooks:Szablony/Ogólne|Szablony - Ogólne |Wikibooks:Szablony/Informacje|Szablony - Informacje |Wikibooks:Szablony/PrzypisStrona|PrzypisStrona |Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe |Wikibooks:Szablony/Książkowe|Szablony - Książkowe |Wikibooks:Szablony/Tekst|Szablony - Tekst |Wikibooks:Szablony/Zawartość|Szablony - Zawartość |Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki |Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania |Wikibooks:Szablony/Języki|Szablony - Języki |Wikibooks:Szablony/Liczby|Szablony - Liczby |Wikibooks:Szablony/Kategorie|Szablony - Kategorie |Wikibooks:Szablony/Opisy|Szablony - Opisy |Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki |Wikibooks:Szablony/Szablony opływania|Szablony opływania |Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe |Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe |Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne |Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog |Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I |Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II |Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III |Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV |Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V |Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI |Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty |Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe) |Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe |Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów |Wikibooks:Szablony/Linki|Szablony - Linki |Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne |Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia |Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja |Wikibooks:Szablony/Media|Szablony - Media |Wikibooks:Szablony/Grafika|Szablony - Grafika |Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie |Wikibooks:Szablony/Techniczne|Szablony - Techniczne |Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta |Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty |Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki |Wikibooks:Szablony/Systemowe|Szablony - Systemowe |Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I |Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II |Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III |Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV |Pomoc:Spis treści/Administracja|Administracja |Wikibooks:Kwestie techniczne|Kwestie techniczne |Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy |Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB) |Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA) |Wikibooks:Administratorzy|Administratorzy |Wikibooks:Prośby do administratorów|Prośby do administratorów |Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu |Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu |Wikibooks:Biurokraci|Biurokraci |Wikibooks:Boty|Boty |Wikibooks:Stewardzi|Stewardzi |Wikibooks:Użytkownicy|Użytkownicy |Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy |Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy |Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień |Wikibooks:Nazwa użytkownika|Nazwa użytkownika |Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika |Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP |Wikibooks:GNU Free Documentation License|GNU Free Documentation License }}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude> orsroln2fkwlc5nd2cqprjdm4puxnv3 Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I 4 63512 551586 551578 2026-08-12T12:06:44Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551586 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania treści od {{LinkPatrz|liczba_od}} do {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{LinkŚródtytuł|p.CzyZerowyNapisWprowadzeniaTekstu}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - konie cwyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> aqjfu8xzllggk4qkxwx4m6pyrsz42jo 551587 551586 2026-08-12T12:07:30Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551587 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania treści od {{LinkPatrz|liczba_od}} do {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{LinkŚródtytuł|p.CzyZerowyNapisWprowadzeniaTekstu}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - konie cwyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3g0qgbj6m51jn5vmeo19hnadyqmbamy 551588 551587 2026-08-12T12:09:13Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551588 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania treści od {{LinkPatrz|liczba_od}} do {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - konie cwyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5kkysle87andr78unae3hv3fpcbsfqk 551589 551588 2026-08-12T12:09:38Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551589 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania treści od {{LinkPatrz|liczba_od}} do {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - konie cwyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 5db0hcrlxntiv9vvido3rjyrkggdxol 551590 551589 2026-08-12T12:11:40Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551590 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzor do przeszukiwania treści od {{LinkPatrz|liczba_od}} do {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rx5gmeczlficcf4ns0pms3yzi5flklu 551591 551590 2026-08-12T12:15:46Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551591 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}} == Szablon do wyszukania linii z nagłówkiem: '''Spis treści''', czy '''Spis rzeczy'''. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> soaoxlw8hg4h2uw2aurolea20h236w5 551593 551591 2026-08-12T12:39:08Z Persino 2851 /* {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} */ 551593 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}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9e6m29y5iiyq7x3mvtwnklontvs6vv6 551594 551593 2026-08-12T12:39:51Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} */ 551594 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}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q4u5mn0kqtryjh98vu3a21wparbtips 551595 551594 2026-08-12T12:40:19Z Persino 2851 /* {{Śródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}}{{Code|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron}} */ 551595 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}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> c9iprekiyr4ekq9youw8zpe3c2ljgbk 551596 551595 2026-08-12T12:41:15Z Persino 2851 /* {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} */ 551596 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}} == Szablon do wyszukania linii, a czy w nim jest nagłówek: '''Spis treści''', czy '''Spis rzeczy''', niezależnie jakiej wielkościami liter napisany, niezaleznie jak znormowany. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron(linia,spacje_na_poczatku)...end; </syntaxhighlight> Parametry funkcji: * {{Code|linia}} {{Patrz|linia}} - linia do sprawdzenia, * {{Code|spacje_na_poczatku}} {{Patrz|spacje_na_poczatku}} - czy na początku linii mogą być odstępy. Funkcja używa do swojego działania tabeli {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}: <syntaxhighlight lang="lua"> p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci={ [1]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Tt][Rr][Ee][ŚśSs][Cc][Ii][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", [2]="[ _\t]*'*[ _\t]*[Ss][Pp][Ii][Ss][ _\t]+[Rr][Zz][Ee][Cc][Zz][Yy][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*", }; </syntaxhighlight> * Funkcja usuwa znaki kontrolne: {{Code|<nowiki>%c</nowiki>}}, bez nowej linii: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, * W zależności od ustawień parametrów, które też trzeba włączyć do działania tego szablonu, funkcja wyszukuje odpowiedni napis wprowadzenia tekstu, ** Funkcja ustawia wartość {{Code|true}}, gdy taki nagłówek znalazł. Funkcja do usuwania odpowiednich znaków kontrolnych bez pewnych elementów, do tego celu używa funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}, by dalej przejść do omówionego wyszukiwania. == {{Śródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy}}{{Code|p.ZnajdowanieZerowegoSpisuRzeczy}} == Funkcja w tekście wyszkukuje rozdziału ze: '''Spis treści''', czy: '''Spis rzeczy''', niezależnie jakimi wielkościami liter napisany, niezależnie jak znormowany, określone tabelą: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci}}. Na początku nowej linii nie mogą byc odstępy. Funkcja przeszukuje tekst: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, od pozycji: {{Code|liczba_od}} {{LinkPatrz|liczba_od}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. Szablon szuka od tyłu lub do przodu, w zależności jaką wartość ma zmienna {{Code|jak}} {{LinkPatrz|jak}}, czyli w pewnych zakresach, tzn. od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}. W wyszukiwaniu do przudu pierwsza liczba jest mniejsza lub równa od drugiej, a do tyłu, pierwsza liczba większa lub równa od drugiej. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoSpisuRzeczy(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,jak)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - przeszukiwany tekst, * {{Code|liczba_od}} {{Patrz|liczba_od}} - początek wyszukiwania, * {{Code|liczba_do}} {{Patrz|liczba_do}} - koniec wyszukiwania, * {{Code|jak}} {{Patrz|jak}} - {{Code|true}}, gdy wyszukiwanie do tyłu, a {{Code|false/nil}} do przodu. Funkcja po wyszukaniu kolejnej linii, aż do zakończenia jej zasobów, usuwa znakispecjalne bez: {{Code|<nowiki>\n</nowiki>}} i tabulacji: {{Code|<nowiki>\t</nowiki>}}, przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnakoweKontrolneNiewidzialne|p=Techniczne}}}}. On jak znalazł odpowiednią linię pasującego do wzoru, to zwraca zestaw parametrów: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,rozdzial; </syntaxhighlight> Parametry zwracane dla wyszukanego rozdziału zwracanego: * {{Code|rozdzial}} - wyszukany rozdział, mający pewną w tekście {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} - początek wyszukanej linii z nim, * {{Code|liczba_koniec_rozdzial}} {{Patrz|liczba_koniec_rozdzial}} - koniec wyszukanej linii z nim. W pozostałych przypadkach funkcja nie zwraca żadnej wartości. == {{Śródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}{{Code|p.CzyWprowadzenieNapisuTekstuCentrowany}} == Funkcja sprawdza, czy wyszukany szablon jest centrowany, to: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, a znacznik jest według: {{Tag|center}}, czyli też centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyWprowadzenieNapisuTekstuCentrowany(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa)...end; </syntaxhighlight> Parametry fukcji: * {{Code|szablon}} {{Patrz|szablon}} - sprawdzany szablon, czy znacznik, * {{Code|obiekt}} {{Patrz|obiekt}} - obiekt typu: {{Code|SZABLON}}, dla szablonu, lub: {{Code|ZNACZNIK}}, dla znacznika, * {{Code|kod}} {{Patrz|kod}} - numer obiektu {{LinkPatrz|obiekt}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - taabela bazy danych zakodowanego tekstu, * {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica przetworzonych elementów z: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, w wyniku użycia pewnych funkcji, * {{Code|pelna_nazwa_spisu_tresci_szablonowapelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - nazwa spisu w wersji szablonowej. Funkcja do sprawdzania, w tym przypadku szablonów centrowania, używa, do tego celu tabeli o kluczach o nazwach z nimi w {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.szablony_wprowadzenia_napisu_spisu_rzeczy={ ["Ce"]=1, ["Centruj"]=1, ["Center"]=1, }; </syntaxhighlight> Jeżeli znaleziony wskazany szablon, czy znacznik, centrowania ma zawartość, wtedy funkcja zwraca wynik: {{Code|true}}, przeciwnie nie zwraca żadnej wartości. == {{Śródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}}{{Code|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu}} == Funkcja wyszukuje teksty według wzoru {{Code|wzor}} {{LinkPatrz|wzor}} od {{Code|liczba_od}} {{LinkPatrz|liczba_od}} do {{Code|liczba_do}} {{LinkPatrz|liczba_do}}, od tyłu lub do przodu w zależności od ustalonej zmiennej {{Code|jak}} {{LinkPatrz|jak}}. Wybiera stąd wyszukiwania, które nie są rozdziałami dodatnimi równaniowymi i ujemnymi będących pozycjami listy. Funkcja wyklucza rozdziały będące szablonami centrowania. Funkcja sprawdza, czy wyszukany rozdział jest centrowania, robi to za pomocą zmiennej {{Code|linia}} {{LinkPatrz|linia}} i tabel baz, tzn.: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, z przetworzonymi danymi z: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Zmienna: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, jest tylko potrzebna do przetłumaczenia na adres względny nazwy szablonu centrowania. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu(tekst_rozwiniety_calego_artykulu,wzor,liczba_od,liczba_do,jak,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end; </syntaxhighlight> Parametry funkcji: * {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, * {{Code|wzor}} {{Patrz|wzor}} - wzór do przeszukiwania treści od: {{LinkPatrz|liczba_od}}, do: {{LinkPatrz|liczba_do}}, do tyłu, jak i do przodu, w zależności od wyboru w zmiennej {{LinkPatrz|jak}}, * {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od}}, * {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do}}, * {{Code|jak}} - jak w: {{LinkPatrz|jak}}, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}. Funkcja przeszukuje tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} według wzoru {{LinkPatrz|wzor}} w pewnych zakresach: {{LinkPatrz|liczba_od}} - {{LinkPatrz|liczba_do}}, od tyłu, czy do przodu, według {{LinkPatrz|jak}}, używając do tego funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja sprawdza, aby wykluczyć je, czy wyszukany ciąg jest szablonem centrowania, robi to za pomocą funkcji: {{LinkŚródtytuł|p.CzyWprowadzenieNapisuTekstuCentrowany}}, a jeżeli nie, to trzeba sprawdzić, czy to jest zerowy napis wprowadzenia testu, w tym celu rewidujemy to za pomocą: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Jeżeli wszystko poszło dobrze do zwracane są wyniki w postaci {{Patrz|wynimi znajdowania centrowanego}}: <syntaxhighlight lang="lua"> return liczba_start_rozdzial,liczba_koniec_rozdzial,linia; </syntaxhighlight> Wyjaśnienie parametrów zwracanych: * {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}} - początek wyszukanej linii {{LinkPatrz|linia}}, * {{Code|liczba_koniec_rozdzial}} {{LinkPatrz|liczba_koniec_rozdzial}} - koniec wyszukiwanej linii {{LinkPatrz|linia}}, * {{Code|linia}} - jak w: {{LinkPatrz|linia}}, czyli wyszukiwana linia spełniająca pewne kryteria. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> biql3xfdvyenh91t8sisi6k2mu8eami Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II 4 63917 551612 551585 2026-08-12T16:11:14Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551612 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł okładki jako spisowy, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hvwxqjlf9lzxt2g3g3stgwakk3wv2zk 551613 551612 2026-08-12T16:12:05Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551613 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł okładki jako spisowy, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0flpf2bzrzjl8w9f9d63dfnzebvexxu 551614 551613 2026-08-12T16:15:01Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551614 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw - {{LinkPatrz|nazwa_przestrzeni}}, nazwa przestrzeni książki - {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki - {{LinkPatrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł okładki jako spisowy, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qy6vqlfbdqw38sosve4t47x7vhcliub 551615 551614 2026-08-12T16:15:45Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551615 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł okładki jako spisowy, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9yllj6pf0bp4pl2rcxl0s8l1qf6oph0 551616 551615 2026-08-12T16:19:13Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551616 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej {{LinkPatrz|czy_usun_okladka}} mna wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7m1ullxfti4xr0jtj9ctbtnb05ihs2k 551617 551616 2026-08-12T16:20:15Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551617 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 785bwhvw188bm86sxe7m358y98sm25j 551618 551617 2026-08-12T16:22:16Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551618 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3k2wse6iqupy6vayaootvw4colp0ofn 551619 551618 2026-08-12T16:24:22Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551619 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli to jest pczy to jest prawdziwy artykuł podręcznika, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 32u7yejk5p2sjbe7r7fgb3d2wkifoa2 551620 551619 2026-08-12T16:26:12Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551620 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} - kolejno jest to: nazwa przestrzeni nazw {{Patrz|nazwa_przestrzeni}}, nazwa przestrzeni książki {{Patrz|nazwa_przestrzeni_ksiazki}}, i nazwa książki {{Patrz|nazwa_ksiazki}}, * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> fir53sa5eagraf74x1mdgsjbuazisjp 551621 551620 2026-08-12T16:28:01Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551621 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 4rx66ynqc7kcwmrumdvznutxmkbzb5t 551622 551621 2026-08-12T16:28:46Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551622 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podsręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego oddefinicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> d0jaovme3is0ccitd7scjusd360lxlq 551623 551622 2026-08-12T16:36:08Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551623 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robionei sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego definicja: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równej {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> on27ybx9v9prsrt7h633ono2gwmz88r 551624 551623 2026-08-12T16:36:50Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551624 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niespisowe}} {{Patrz|czy_artykuly_niespisowe}} - czy artyluł uznać w linku za niepisowy. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równej {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3g6nou5m1hnni8x5kvb4vlql539mqjt 551625 551624 2026-08-12T16:45:07Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551625 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równej {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8pv964alwx7mfj10g0eenj5icf581mr 551626 551625 2026-08-12T16:48:29Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551626 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równej {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lcgsk7bvpdecikuq5nyybm9f8cm43a5 551627 551626 2026-08-12T16:50:37Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551627 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 43zp2cvpgdyyayxdc7gki7tl0zswzxq 551628 551627 2026-08-12T17:01:42Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551628 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{ZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca dane w postaci: * Są te ssame parametry zwracane, co dla: {{ZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych: * To samo wytłumaczenie, co dla: {{ZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> qs13sii7k27a84ubmyrzp68gbgfcv28 551629 551628 2026-08-12T17:02:00Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551629 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{ZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca dane w postaci: * Są te same parametry zwracane, co dla: {{ZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych: * To samo wytłumaczenie, co dla: {{ZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0xqp3lrjnxx3ig7f004ltrdntzsqxrg 551630 551629 2026-08-12T17:02:25Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551630 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca dane w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e1nf6j5cyqg7sl2xoduc0re5snb6ko0 551631 551630 2026-08-12T17:02:38Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551631 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca dane w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> efqyee3oayjhfz3ldq5nvite95tz6ww 551632 551631 2026-08-12T17:03:44Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551632 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, przez tą funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych przez tą funkcję: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lbec0z0143eod5h72jj52jwp7izxnbn 551633 551632 2026-08-12T17:13:14Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551633 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tą funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych przez tą funkcję: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> le85wb11v6sqr2rc272ysc2w09ym0dq 551634 551633 2026-08-12T17:13:49Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551634 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tą funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych przez tą funkcję: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> glk00zdkyeioynnjk6c8ph8toi4pi2z 551635 551634 2026-08-12T17:14:13Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551635 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych przez tą funkcję: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> dxk9fjr6qj8iwrjxsz46u0wuvqc5uae 551636 551635 2026-08-12T17:15:08Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551636 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}. Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> l0yqm3c6ondf5p2eyc38a17blbmu61n 551637 551636 2026-08-12T17:39:12Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551637 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów przedstawiają linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. W sszablonach szukamy parametrów rowne wartością tych podanych parametrach w tej tablicy,a tam szukamy linków, okreslonych w tej wypowiedzi, szukamy pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}} zrzucamy wynik do funkcji w nagłówku,i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> m9dbtjcv1lmsyufjjbsbf0sahr45gqb 551638 551637 2026-08-12T17:40:46Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551638 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów przedstawiają linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. W sszablonach szukamy parametrów rowne wartością tych podanych parametrach w tej tablicy, a tam szukamy linków, okreslonych w tej wypowiedzi, szukamy pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}} zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> f9y7j8u9cdjwbhjrpilq2cvcjwp261p 551639 551638 2026-08-12T17:45:19Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551639 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> d43jxttao3izicawk8u7kbq7bxar4o9 551640 551639 2026-08-12T17:52:00Z Persino 2851 /* {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} */ 551640 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co w psomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> r4mk4hghmwj0nafsoz3fsk2fwc92eml 551641 551640 2026-08-12T17:53:37Z Persino 2851 /* {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} */ 551641 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> q3k7dowvmo3dmvaisr5cbbqu9waftj5 551642 551641 2026-08-12T17:55:07Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551642 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> lfcqsxw5pxo5b2s6ado6x12gojz66pg 551643 551642 2026-08-12T17:55:37Z Persino 2851 /* {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} */ 551643 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 8b9lleq22fbjy1iz30vdnv5qbag1nw0 551644 551643 2026-08-12T18:00:44Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551644 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 3wkekpgz5xfdp5s1qadzabwejtiaiie 551645 551644 2026-08-12T18:01:44Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551645 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 55f2nj2dmk2asbhz0fqbuy8c2q7tgrr 551647 551645 2026-08-12T18:26:16Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */ 551647 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rzkpk8j70l0jo8z9cvxo34lw8rs5ang 551648 551647 2026-08-12T18:31:32Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551648 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzecch parametrów,tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 7zifg33ufl1fxw8az56p3z0wl399544 551649 551648 2026-08-12T18:34:19Z Persino 2851 /* {{Śródtytuł|p.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} */ 551649 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzecch parametrów,tzn.: {{Code|szablon}} {{LinkPatrz|szablon}}, {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> brf2np4nrhwt9i22ddq2tyqeyxphqad 551650 551649 2026-08-12T18:35:47Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551650 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzecch parametrów,tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> ddsynvy59g8nylwx09jvnbmf6f7d17h 551651 551650 2026-08-12T18:36:31Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551651 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów,tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> es6wdt8pdjvl8b4a3onh3kki9lqgpky 551652 551651 2026-08-12T18:36:52Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551652 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. WE pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia kliucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, okreslonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 9gtvptm467260ox3qfbq4o8rtyvzawd 551653 551652 2026-08-12T18:39:34Z Persino 2851 /* {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} */ 551653 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> j98kfl7ju8fijswv8rmxvja9e6tapuk 551654 551653 2026-08-12T18:42:34Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551654 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, to zwraca {{Code|true}},jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny artykuł, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> rhz07qh58x42uvzbzrskg41jtdvxfjk 551655 551654 2026-08-12T18:44:35Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551655 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 25isl38eo7hs29820rh44cc1qqzu6lc 551658 551655 2026-08-12T20:00:55Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementySpisoweArtykularne}}{{Code|p.CzyTamElementySpisoweArtykularne}} */ 551658 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementySpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> s4xtl69bjg0846v6o7tg58t0ex5l9gv 551659 551658 2026-08-12T20:01:18Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */ 551659 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funckja szuka pierwszego spisowego artykularnego nieokładkowego artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po pdanym parametrze zakodowania przy pomocy funkcji {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> hsqtbv6ykjffo29766w29a2l0z9b90c 551660 551659 2026-08-12T20:16:54Z Persino 2851 /* {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} */ 551660 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.CzyElementSpisuRzeczy}}{{Code|p.CzyElementSpisuRzeczy}} == Funkcja sprawdza, czy wywołanie szablonowe, obiekty typu {{Code|SZABLON}}, linkuje do artykułu w książce, lub obiekt {{Code|LINKW}}, też musi być artykułem (podstroną) tego podręcznika. Funkcja sprawdza, czy ten artykuł nie jest artykułem okładką, czy innym niedozwolonym artykułem, to zależy od tego od definicji, to jest robione i sprawdzane tablicą {{Patrz|p.artykularne_niespisowe}}, którego określenie: <syntaxhighlight lang="lua"> p.artykularne_niespisowe={ [1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$", --[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$", }; </syntaxhighlight> Funkcja traktuje stronę za podręcznik, jeżeli jest spełnione {{Patrz|czy_podrecznik}}: <syntaxhighlight lang="lua"> local czy_podrecznik=((mw.ustring.match(artykul,"^%u"))and((not mw.ustring.match(artykul,"%l%u"))or(mw.ustring.match(artykul,"%s")))); </syntaxhighlight> Artykuł książki powinien zaczynać się od dużej litery oraz nie powinien mieć po małej literze dużą lub w sobie powinien mieć dowolne dozwolone, przez mechanizm '''MediaWiki''', znaki odstępu. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci) </syntaxhighlight> Parametry funkcji {{ZobaczTeż|parametry funkcji spisu artykularnego}}: * {{Code|szablon}} - jak w: {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - kolejno jest to: '''nazwa przestrzeni nazw''', '''nazwa przestrzeni książki''', i '''nazwa książki''', * {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści w podręcznikiem, jego wartością możeb być wartość pusta, * {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, * {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tablica nazw spisu przekierowaniowego, używanego przez funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|p.AnalizujLinkSzablonyOrazLinki}}, * {{Code|czy_usun_okladka}} {{Patrz|czy_usun_okladka}} - uważaj artykuł wszystkie, nawet okładki i inne tego typu, jako spisowe, traktuj ją jako artykuł spisowy, * {{Code|czy_glowny_spis_tresci}} {{Patrz|czy_glowny_spis_tresci}} - uważaj artykuł główny podręcznika za stronę jego główną, w przeciwnie jest traktowany jako artykuł spisowy, przy ustawionej zmiennej: {{LinkPatrz|czy_usun_okladka}}, na wartość prawdziwą, ale przy innej wartości logicznej tego parametru, taki artykuł zostaje uznany za niespisowy. Funkcja zwraca, zrzucane przez tę funkcję, dane w postaci {{ZobaczTeż|parametry zwracane spisu artykularnego}}: <syntaxhighlight lang="lua"> return czy_artykul_nieglowny,numer_rodzaju_artykulu,czy_podrecznik,czy_artykuly_niespisowe; </syntaxhighlight> Wytłumaczenie parametrów zwracanych {{ZobaczTeż|opis parametrów spisu artykularnego}}: * {{Code|czy_artykul_nieglowny}} {{Patrz|czy_artykul_nieglowny}} - czy artykuł niegłówny, * {{Code|numer_rodzaju_artykulu}} {{Patrz|numer_rodzaju_artykulu}} - poziom artykułu w podręczniku, zwracany, jako drugi parametr funkcji: {{LinkPatrz|p.AnalizujLinkSzablonyOrazLinki}}, parsujących szablony i linki wewnętrzne, z artykułami, i wyciagający z nich wioski, i zaliczający je do pewnych kategorii, * {{Code|czy_podrecznik}} - jak w: {{LinkPatrz|czy_podrecznik}}, czyli czy to jest prawdziwy artykuł podręcznika, a nie udawany, * {{Code|czy_artykuly_niedozwolone}} {{Patrz|czy_artykuly_niedozwolone}} - czy artykuł uznać w linku za niedozwolony dla {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}} {{Code|{{=}}}} {{Code|1}}, artykuły o innej wartości o tej zmiennej poziomu są odrazu uznane za dozwolone. Funkcja oznacza artyluły określanej zmienną: {{Code|numer_rodzaju_artykulu}} {{LinkPatrz|numer_rodzaju_artykulu}}, równą: {{Code|1}}, jako za możliwie podręcznikowe, na podstawie zmiennej {{LinkPatrz|czy_podrecznik}}, dla innej wartości tego pierwszego to drugie zawsze przyjmuje wartość fałszywą. == {{Śródtytuł|p.CzySpecjalnyElementSpisuRzeczy}}{{Code|p.CzySpecjalnyElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}}, są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję. Funkcja rozważa artykuły znajdujące się w definicji szablonu {{s|SpisTreści}} {{Patrz|SpisTreści}}, które są na pewno artykułami książki, bo taka jest definicja tego szablonu. We pozostałych przypadkach funkcja sprawdza szablony, a w nich linki, zdefiniowane przez tabelę {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}: <syntaxhighlight lang="lua"> p.inne_linki_szablony_elementy_spisu_rzeczy={ ["SpisPozycja"]={true,numer_link="tyt",}, ["SpisZw"]={false,numer=1,link=2,}, }; </syntaxhighlight> Ta tablica przedstawia klucze i ich wartości charakteryzujące linki, w przypadku tego pierwszego, czyli {{s|SpisPozycja}}, parametrem szukanym z linkami jest: {{Parametr|numer_link|tyt}}, a w tym drugim, czyli: {{s|SpisZw}}, jest: {{Parametr|link|2}}. Wartości tych parametrów w tabeli parametrów szablonów o tych nazwach parametrów (kluczy) przedstawiają dowolny tekst, a w tym możliwie znajdujące się linki szablonów inteligetnych według obiektu: {{Code|SZABLON}}, jak i na podstawie: {{Code|LINKW}}, jako normalne linki wewnętrzne. A tam szukamy linków, określonych w tej wypowiedzi, znajdujemy, jeśli jest, pierwszego takiego linku, jak znajdziemy, to z wyniku funkcji: {{Patrz|p.CzyElementSpisuRzeczy}}, zrzucamy wynik do funkcji w nagłówku, którego pierwszy argument ma wartość prawdziwą, i zakańczamy natychmiast tą funkcję. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzySpecjalnyElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, * Dla szablonu {{LinkPatrz|SpisTreści}}, funkcja zrzuca zmienne, które da się jeszcze wytłumaczyć według {{LinkZobaczTeż|opis parametrów spisu artykularnego}}, co do dwóch pierwszych parametrów: <syntaxhighlight lang="lua"> return true,1; </syntaxhighlight> Dla pozostałych obsługiwanych szablonów przez tę funkcję, parametrami zwracanymi przez nią są we wskazaniu wartości zwracane przez funkcję użytą przez procedurę używaną w jego definicji, jest to funkcja wspomniana w opisie: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}{{Code|p.CzyGeneralnieElementSpisuRzeczy}} == Funkcja ma ten sam opis, co: {{LinkŚródtytuł|p.CzyElementSpisuRzeczy}} - ta funkcja zostanie uruchomiona w pierwszej kolejności, lub: {{LinkŚródtytuł|p.CzySpecjalnyElementSpisuRzeczy}} - jeżeli ta pierwsza funkcja nie zrzuci treściwych wyników, to zostanie wywołana ta druga, jaka z nich funkcja zostanie uruchomina ze zwróconymi jej parametrami zależy od rodzaju wywołania szablonowego, w tej funkcji są te same znaczenia parametrów przyjmowanych i zwracanych przez funkcję, co wspomnianych dwóch. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyGeneralnieElementSpisuRzeczy(szablon,obiekt,kod,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_usun_okladka,czy_glowny_spis_tresci)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}. Funkcja zwraca, zrzucane przez tę funkcję, dane parametry w postaci: * Są te same parametry zwracane, co dla: {{LinkZobaczTeż|parametry zwracane spisu artykularnego}}, te szablony są opisane tablicą: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}. Parametrami zwracanymi przez funkcję są we wskazaniu wartości zwracane przez tą ostatnią wpomnianą procedurę: <syntaxhighlight lang="lua"> return czy_element_spisu,numer_rodzaju_artykulu,czy_podrecznik,czy_okladka; </syntaxhighlight> Wytłumaczenie parametrów zwracanych przez nią: * To samo wytłumaczenie, co dla: {{LinkZobaczTeż|opis parametrów spisu artykularnego}}. == {{Śródtytuł|p.CzyTamElementyNieSpisoweArtykularne}}{{Code|p.CzyTamElementyNieSpisoweArtykularne}} == Funkcja szuka pierwszego spisowego artykularnego dozwolonego, czyli nieokładkowego, niegłównego w podręczniku, artykułu w linii {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}. Funkcja wyszukuje takie artykuły inną funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy}}, w wyniku iterowania po podanym parametrze zakodowanym przy pomocy funkcji z: {{Code|{{m|Szablonowe}}}}. Gdy funkcja znalazła taki artykuł, ale nie artykuł główny, ale nie okładkę, lub dozwolony artykuł, to zwraca {{Code|true}}, jak ona nie znalazła żadnego takiego artykułu, lub znalazła okładkę, lub inny podobny, to zwraca {{Code|false}}, a w przypadku tylko elementów niespisowych funkcja zwraca zawsze wartość {{Code|true}}. Definicja skrótowa funkcji: <syntaxhighlight lang="lua"> function p.CzyTamElementyNieSpisoweArtykularne(linia,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end; </syntaxhighlight> Parametry funkcji: * Są te same parametry, co dla: {{LinkZobaczTeż|parametry funkcji spisu artykularnego}}, ** Zamiast pierwszych trzech parametrów, tzn.: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy/Tom I}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, jest: {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, ** Ona nie ma w sobie, w swojej definicji, końcowych parametrów, tzn. {{Code|czy_usun_okladka}} {{LinkPatrz|czy_usun_okladka}} i {{Code|czy_glowny_spis_tresci}} {{LinkPatrz|czy_glowny_spis_tresci}}. {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> bchmxfzthr9oiyym26176ocucn8oy8i Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV 4 63919 551592 551581 2026-08-12T12:23:57Z Persino 2851 551592 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.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} == == {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} == {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> n49s6t5fs910j9sb6pq04p6q95tkamf Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy 4 63923 551597 2026-08-12T13:14:29Z Persino 2851 Utworzono nową stronę „<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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''',…” 551597 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|(Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}<użytkownik>'''. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzeenia tekstu przedewszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany,aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> eqfu0maui6j961qch4eitwtoihu24pt 551598 551597 2026-08-12T13:14:57Z Persino 2851 551598 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}<użytkownik>'''. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzeenia tekstu przedewszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany,aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> sdjz5x93efvx9hy4f1n31gr55i919em 551599 551598 2026-08-12T13:15:28Z Persino 2851 /* Spis treści */ 551599 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}<użytkownik>'''. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> 0z53pscv6c8u8xrxd85rkjeqxs9di4y 551600 551599 2026-08-12T13:20:22Z Persino 2851 551600 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porzodku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis tresci''', czy: '''Spis rzeczy''', niezależnie jak znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> a4tb720cvdwq2ok3b465a0mnsuewmc0 551601 551600 2026-08-12T13:21:08Z Persino 2851 551601 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porzodku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis tresci''', czy: '''Spis rzeczy''', niezależnie jak znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> i66vbw0d7h9pzy125ipmkjkitj7pr8f 551602 551601 2026-08-12T13:34:06Z Persino 2851 551602 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porzodku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis tresci''', czy: '''Spis rzeczy''', niezależnie jak znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablonu albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe,używane tylko w spisach, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> e7yb36dkibyfu6mbc6xpbf4ixtrb381 551603 551602 2026-08-12T13:35:20Z Persino 2851 /* Spis treści */ 551603 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}} Funkcje do analizy i wydzielania, ze strony, dowolnego spisu rzeczy należącego do książki w przestrzeni nazw, nawet niby, czyli: '''{{Np|(main)|link=tak}}''', '''{{Np|Wikijunior|link=tak}}''', '''{{lr2|Brudnopis}}/<użytkownik>''' i '''{{Np|User|link=tak}}/<użytkownik>'''. Moduł posiada specjalistyczne funkcje wyszukujące tekst według wzoru od przodu, jak i od tyłu, jak i funkcje znajdujące szcziśle określone elementy niezaleznie w jakim porzodku, ale kolejność sie liczy, tzn. do przodu lub wsteczna. Funkcja wyszukuje rozdziały, w tym rozdział: '''Spis tresci''', czy: '''Spis rzeczy''', niezależnie jak znormowane, od tyłu, znajdując rozdziały najbliższe przed sobą, nawet wyszukując je kolejne. == Spis treści == Poszcególne moduły opisują, dla przejrzysości podzielone na nie, poszczególne funkcje w module: {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}, a te strony z nimi: * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I}} - są do moduły do wyszukiwania napisów wprowadzenia tekstu przede wszystkim zerowych, ale też mozna sprawdzić, czy przypadkiem to jest rozdział centrowany, aby go czasami wykluczyć z obliczeń, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II}} - są do sprawdzania, czy szablon, obiekt typu: {{Code|SZABLON}}, czy inne: {{Code|LINKW}} i {{Code|LINKZ}}, są obiektami spisu treści podręcznika, a jeżeli tak, to funkcja zwraca wartość prawdziwości (powodzenia), lub do rewidowania, czy w linii niebędącej pozycją ujemną, czy tam są w ogóle elementy symbolizujące jakiegoś rodzaju linki spisu rzeczy, tam przedstawiane szablony albo to są szablony linków inteligetnych - czyli szablonu spisu, jak i inne linki typowo spisowe, używane tylko w spisach, a nie w treściwych częściach książki, * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI}} * {{lru|Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII}} {{BrClear}} <noinclude><!-- -->{{ProstaStronaKoniec}}<!-- -->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!-- --></noinclude> kx3kelx855l9rv08p8mhyd0b5bu0z1r