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
Śpiewnik
0
54239
551820
550434
2026-08-15T07:39:21Z
Ashaio
4702
+3
551820
wikitext
text/x-wiki
__NOTOC__ {{Status|-100%|Muzyka}}
== Wprowadzenie ==
Śpiewnik zawiera wyłącznie utwory na wolnych licencjach oraz takie, do których majątkowe prawa autorskie wygasły (utwory z domeny publicznej).
Preferowaną formą zapisu muzycznego jest tzw. ''lead sheet'', tzn. nutowy zapis melodii jednogłosowej oraz schematyczny zapis towarzyszących akordów. Mile widziane są aranżacje wielogłosowe oraz na głos i fortepian – koniecznie oparte na źródłach.
W spisie treści piosenki podane są w kolejności alfabetycznej. W materiałach dodatkowych można umieścić indeksy chronologiczne, tematyczne itp.
== Pieśni i piosenki ==
{{Kolumny|3|
# {{sr|A w Krakowie na ulicy}}
# {{sr|Aaa, kotki dwa}}
# {{sr|Akademik ci ja}}
# {{sr|Alpuhara}}
# {{sr|Anioł pasterzom mówił}}
# {{sr|Auld Lang Syne}}
# {{sr|Bartoszu, Bartoszu}}
# {{sr|Bogurodzica}}
# {{sr|Boże, coś Polskę}}
# {{sr|Boże wieczny, Boże żywy}}
# {{sr|Bóg się rodzi}}
# {{sr|Był Matysek chłop przed laty}}
# {{sr|Bywaj dziewczę zdrowe}}
# {{sr|Choć burza huczy wkoło nas}}
# {{sr|Choćbym ja jeździł we dnie i w nocy}}
# {{sr|Cicha noc}}
# {{sr|Czarna sukienka}}
# {{sr|Czerwone jabłuszko}}
# {{sr|Czerwony pas}}
# {{sr|Cześć polskiej ziemi, cześć}}
# {{sr|Cztery rzeczy w Polsce słyną}}
# {{sr|Dajcież mi kielicha}}
# {{sr|Dalibóg, że powiem mamie}}
# {{sr|Deutschlandlied}}
# {{sr|Do pracy, razem do pracy}}
# {{sr|Duma ukrainna}}
# {{sr|Dzisiaj w Betlejem}}
# {{sr|Gaude mater}}
# {{sr|Gaudeamus igitur}}
# {{sr|Gdy się Chrystus rodzi}}
# {{sr|Gdym z kozaki szedł na boje}}
# {{sr|Gdzież to jedziesz Jasiu}}
# {{sr|God Save the King}}
# {{sr|Góralu, czy ci nie żal}}
# {{sr|Greensleeves}}
# {{sr|Haniu moja, pójdź do domu}}
# {{sr|Hatikvah}}
# {{sr|Hej, bracia opryszki}}
# {{sr|Hej hej, hej hej, do kniej, do kniej}}
# {{sr|Hej koledzy, dalej żywo}}
# {{sr|Hej koledzy, po mozołach}}
# {{sr|Hej koledzy, z wspólnej czary}}
# {{sr|Hej, z góry, z góry jadą Mazury}}
# {{sr|Hej, żeglujże, żeglarzu}}
# {{sr|Idzie żołnierz borem, lasem}}
# {{sr|Idź głosie po rosie, daj dziewczynie wiadę}}
# {{sr|Integer vitae}}
# {{sr|Jak dobrze nam}}
# {{sr|Jak to na wojence ładnie}}
# {{sr|Jesienią}}
# {{sr|Jeszcze jeden mazur dzisiaj}}
# {{sr|Jezus malusieńki}}
# {{sr|Kiedy będzie słońce i pogoda}}
# {{sr|Kochajmy się}}
# {{sr|Koło mego ogródeczka}}
# {{sr|Kołysanka Brahmsa}}
# {{sr|Kołyszże się, kołysz}}
# {{sr|Komu dzwonią, temu dzwonią}}
# {{sr|Kot kot pani matko}}
# {{sr|Kiedy nam się pora zdarza}}
# {{sr|Krakowianka i kat}}
# {{sr|Kto się w opiekę}}
# {{sr|Kukułeczka}}
# {{sr|Kurdesz}}
# {{sr|Laura i Filon}}
# {{sr|Leci liście z drzewa}}
# {{sr|Leć głosie po rosie, po niskiej leszczynie}}
# {{sr|Leć głosie po rosie, prosto ku traktowi}}
# {{sr|Lilie}}
# {{sr|Lulajże, Jezuniu}}
# {{sr|Lutni moja ulubiona}}
# {{sr|Małgorzatka}}
# {{sr|Marsylianka}}
# {{sr|Marsz, marsz Polonia}}
# {{sr|Marzenie o grajku}}
# {{sr|Mazurek Dąbrowskiego}}
# {{sr|Me lube dziewczę}}
# {{sr|Mędrcy świata monarchowie}}
# {{sr|Mizerna, cicha}}
# {{sr|Na dolinie zawierucha}}
# {{sr|Ne chody Hryciu na weczernyci}}
# {{sr|Nie tak in illo tempore bywało|Nie tak ''in illo tempore'' bywało}}
# {{sr|O, gwiazdeczko, coś błyszczała}}
# {{sr|O, gwiazdeczko, coś świeciła}}
# {{sr|O Matko Polko}}
# {{sr|O mój rozmarynie}}
# {{sr|Obie kochał pan}}
# {{sr|Oda do radości}}
# {{sr|Ogródek}}
# {{sr|Oj, chmielu, chmielu}}
# {{sr|Oj ty horo kamennaja}}
# {{sr|Ojcze z niebios Boże Panie}}
# {{sr|Ospały i gnuśny, zgrzybiały ten świat}}
# {{sr|Ozdobo twarzy, pokrętne wąsy}}
# {{sr|Panicz i dziewczyna}}
# {{sr|Pieśń poranna}} (Kiedy ranne wstają zorze...)
# {{sr|Pieśń wieczorna}} (Wszystkie nasze dzienne sprawy...)
# {{sr|Piękna nasza Polska cała}}
# {{sr|Pije Kuba do Jakuba}}
# {{sr|Płynie Wisła, płynie}}
# {{sr|Po cóż ciągle w mieście siedzieć}}
# {{sr|Po nocnej rosie płyń dźwięczny głosie}}
# {{sr|Podolanka}}
# {{sr|Pojedziemy na łów}}
# {{sr|Polak nie sługa}}
# {{sr|Polska młodzież niech nam żyje}}
# {{sr|Polski przemysł niech nam żyje}}
# {{sr|Potężny Boże}}
# {{sr|Pożegnanie Childe Harolda}}
# {{sr|Precz, precz od nas smutek wszelki}}
# {{sr|Prząśniczka}}
# {{sr|Przybieżeli do Betlejem}}
# {{sr|Przybyli ułani pod okienko}}
# {{sr|Przyjechał Jasieńko}}
# {{sr|Rok się kochali}}
# {{sr|Rota}}
# {{sr|Rześko, żwawo, stuku puku }}
# {{sr|Sadźmy, przyjacielu, róże}}
# {{sr|Serce nie sługa}}
# {{sr|Serdeczna Matko}}
# {{sr|Siedzi sobie zając pod miedzą}}
# {{sr|Służył Jasio u pana}}
# {{sr|Słynie Gopło i Kruszwica }}
# {{sr|Spuśćcie nam na ziemskie niwy}}
# {{sr|Staropolskie zaloty}}
# {{sr|Szła dzieweczka}}
# {{sr|Szynkareczko, szafareczko}}
# {{sr|Śliczne gwoździki, piękne tulipany }}
# {{sr|Śnieżyca}}
# {{sr|Śród opok i jarów}}
# {{sr|Świeci miesiąc, świeci}}
# {{sr|Święta miłości kochanej ojczyzny}}
# {{sr|Świtezianka}}
# {{sr|Tam na błoniu błyszczy kwiecie}}
# {{sr|Ten mem zdaniem dobrze żyje}}
# {{sr|To są czary}}
# {{sr|Trzech Budrysów}}
# {{sr|Ty pójdziesz górą}}
# {{sr|Umarł Maciek, umarł}}
# {{sr|Upływa szybko życie}}
# {{sr|Uśnijże mi, uśnij}}
# {{sr|Użyjmy dziś żywota}}
# {{sr|W krwawem polu srebrne ptaszę}}
# {{sr|Veni Creator}}
# {{sr|W głos serdeczna dumka płynie }}
# {{sr|W morzu przegląda się gwiazda srebrzysta}}
# {{sr|W murowanej piwnicy}}
# {{sr|W ogrodzie na wodzie}}
# {{sr|W okolicznem mieście}}
# {{sr|W polu}}
# {{sr|W polu lipeńka}}
# {{sr|W tył wyloty, w górę wąsy}}
# {{sr|W żłobie leży}}
# {{sr|Wesoło, bracia, wesoło}}
# {{sr|Wesoło żeglujmy, wesoło}}
# {{sr|Wesoły nam dziś dzień nastał}}
# {{sr|Wezmę ja skrzypki}}
# {{sr|Witaj gwiazdko złota}}
# {{sr|Witaj majowa jutrzenko}}
# {{sr|Wojenko, wojenko}}
# {{sr|Wszystkich dziś ciekawość budzi}}
# {{sr|Za Niemen het precz}}
# {{sr|Zagrzmiał mazur, w górę wąsy}}
# {{sr|Zajączek}}
# {{sr|Zdrowaś bądź Maryja}}
# {{sr|Zielona łączka, żółty na niej kwiat}}
# {{sr|Zielony dzban}}
# {{sr|Zła zima}}
# {{sr|Znaszli ten kraj}}
# {{sr|Żal, żal za jedyną}}
# {{sr|Życzenie}}
# {{sr|Дзюба}}
# {{sr|Їхав козак за Дунай}}
# {{sr|Ще не вмерла України і слава, і воля}}
}}
== Materiały dodatkowe ==
* {{sr|Bibliografia}}
* {{sr|Indeks tematyczny}}
iuxgq8snfzyz0vpnffoscco0hr1dsbt
Śpiewnik/Indeks tematyczny
0
56092
551821
550435
2026-08-15T07:51:41Z
Ashaio
4702
+3
551821
wikitext
text/x-wiki
<noinclude>__NOTOC__{{ProstaStronaStart}}</noinclude>
Poniższe grupy nie są rozłączne (piosenka może należeć do więcej niż jednej kategorii).
{{Tabela|atrybuty=cellspacing="10" width="100%"|liczba wierszy=10|liczba kolumn=2|pozycja=brak|klasa op=siatka-mobilna tabela-szerokość
|bez pionu 1_1=tak|opcje 1_1=width="50%"
|bez pionu 1_2=tak|opcje 1_2=width="50%"
|komórka 1_1={{Pudełko komórkowe 1|tytuł= Pieśni patriotyczne
|grafika=
|tekst= * {{sr|Bogurodzica}}
* {{sr|Boże, coś Polskę}}
* {{sr|Czarna sukienka}}
* {{sr|Cześć polskiej ziemi, cześć}}
* {{sr|Cztery rzeczy w Polsce słyną}}
* {{sr|Leci liście z drzewa}}
* {{sr|Marsz, marsz Polonia}}
* {{sr|Mazurek Dąbrowskiego}}
* {{sr|O Matko Polko}}
* {{sr|Rota}}
* {{sr|Święta miłości kochanej ojczyzny}}
* {{sr|Witaj majowa jutrzenko}}
}}
|komórka 1_2={{Pudełko komórkowe 3|tytuł= Piosenki wojskowe
|grafika=
|tekst=* {{sr|Bartoszu, Bartoszu}}
* {{sr|Bywaj dziewczę zdrowe}}
* {{sr|Duma ukrainna}}
* {{sr|Gdzież to jedziesz Jasiu}}
* {{sr|Idzie żołnierz borem, lasem}}
* {{sr|Jak to na wojence ładnie}}
* {{sr|Jeszcze jeden mazur dzisiaj}}
* {{sr|O mój rozmarynie}}
* {{sr|Przybyli ułani pod okienko}}
* {{sr|Tam na błoniu błyszczy kwiecie}}
* {{sr|W krwawem polu srebrne ptaszę}}
* {{sr|Wojenko, wojenko}}
* {{sr|Za Niemen het precz}}
}}
|komórka 2_1={{Pudełko komórkowe 2
|tytuł= Pieśni nabożne
|grafika=
|tekst= {{Wikiźródła|Śpiewnik kościelny}}
* {{sr|Boże wieczny, Boże żywy}}
* {{sr|Gaude mater}}
* {{sr|Kto się w opiekę}}
* {{sr|Ojcze z niebios Boże Panie}}
* {{sr|Pieśń poranna}}
* {{sr|Pieśń wieczorna}}
* {{sr|Potężny Boże}}
* {{sr|Serdeczna Matko}}
* {{sr|Spuśćcie nam na ziemskie niwy}}
* {{sr|Veni Creator}}
* {{sr|Wesoły nam dziś dzień nastał}}
* {{sr|Zdrowaś bądź Maryja}}
}}
|komórka 2_2={{Pudełko komórkowe 4|tytuł= Kolędy
|grafika=
|tekst={{Wikiźródła|Wikitomik:Kancjonał bożonarodzeniowy... przez Wikiskrybów zebrany|Kancjonał bożonarodzeniowy}}
{{Commons|Polish_Christmas_carols|Polish Christmas carols}}
* {{sr|Anioł pasterzom mówił}}
* {{sr|Bóg się rodzi}}
* {{sr|Cicha noc}}
* {{sr|Dzisiaj w Betlejem}}
* {{sr|Gdy się Chrystus rodzi}}
* {{sr|Jezus malusieńki}}
* {{sr|Lulajże, Jezuniu}}
* {{sr|Mędrcy świata monarchowie}}
* {{sr|Mizerna, cicha}}
* {{sr|O, gwiazdeczko, coś świeciła}}
* {{sr|Przybieżeli do Betlejem}}
* {{sr|W żłobie leży}}
* {{sr|Witaj gwiazdko złota}}
}}
|komórka 3_1={{Pudełko komórkowe 1|tytuł= Piosenki i melodie ludowe
|grafika=
|tekst=* {{sr|Choćbym ja jeździł we dnie i w nocy}}
* {{sr|Czerwone jabłuszko}}
* {{sr|Hej, z góry, z góry jadą Mazury}}
* {{sr|Idź głosie po rosie, daj dziewczynie wiadę}}
* {{sr|Kiedy będzie słońce i pogoda}}
* {{sr|Koło mego ogródeczka}}
* {{sr|Leć głosie po rosie, po niskiej leszczynie}}
* {{sr|Leć głosie po rosie, prosto ku traktowi }}
* {{sr|Oj, chmielu, chmielu}}
* {{sr|Oj ty horo kamennaja}}
* {{sr|Piękna nasza Polska cała}}
* {{sr|Płynie Wisła, płynie}}
* {{sr|Szła dzieweczka}}
* {{sr|Świeci miesiąc, świeci}}
* {{sr|Umarł Maciek, umarł}}
* {{sr|W murowanej piwnicy}}
* {{sr|W polu lipeńka}}
* {{sr|Zakochali się}}
* {{sr|Zielona łączka, żółty na niej kwiat}}
}}
|komórka 3_2={{Pudełko komórkowe 3|tytuł= Piosenki dla dzieci
|grafika=
|tekst= {{Wikiźródła|Śpiewnik dla dzieci}}
* {{sr|Jesienią}}
* {{sr|Kukułeczka}}
* {{sr|Ogródek}}
* {{sr|Sokół}}
* {{sr|Śnieżyca}}
* {{sr|Taniec}}
* {{sr|W polu}}
* {{sr|Zajączek}}
* {{sr|Zła zima}}
'''Kołysanki:'''
* {{sr|Aaa, kotki dwa}}
* {{sr|Kołysanka Brahmsa }}
* {{sr|Kołyszże się, kołysz}}
* {{sr|Uśnijże mi, uśnij}}
}}
|komórka 4_1={{Pudełko komórkowe 2
|tytuł= Piosenki o miłości
|grafika=
|tekst=* {{sr|Dalibóg, że powiem mamie}}
* {{sr|Kiedy będzie słońce i pogoda}}
* {{sr|Kot kot pani matko}}
* {{sr|Laura i Filon}}
* {{sr|Marzenie o grajku}}
* {{sr|Me lube dziewczę}}
* {{sr|Panicz i dziewczyna}}
* {{sr|Rok się kochali}}
* {{sr|Serce nie sługa}}
* {{sr|Śliczne gwoździki, piękne tulipany}}
* {{sr|Staropolskie zaloty}}
* {{sr|To są czary}}
* {{sr|Ty pójdziesz górą}}
* {{sr|Z wysokich Parnasów}}
* {{sr|Za Niemen het precz}}
* {{sr|Zakochali się}}
* {{sr|Zielona łączka, żółty na niej kwiat}}
* {{sr|Życzenie}}
}}
|komórka 4_2={{Pudełko komórkowe 4
|tytuł= Piosenki „młodzieżowe”
|grafika=
|tekst=* {{sr|Akademik ci ja}}
* {{sr|Gaudeamus igitur}}
* {{sr|Hej koledzy, dalej żywo}}
* {{sr|Hej koledzy, po mozołach}}
* {{sr|Hej koledzy, z wspólnej czary}}
* {{sr|Ospały i gnuśny, zgrzybiały ten świat}}
* {{sr|Po cóż ciągle w mieście siedzieć}}
* {{sr|Po nocnej rosie płyń dźwięczny głosie}}
* {{sr|Polska młodzież niech nam żyje}}
* {{sr|Precz, precz od nas smutek wszelki}}
* {{sr|Sadźmy, przyjacielu, róże}}
* {{sr|Szła dzieweczka}}
* {{sr|Upływa szybko życie}}
* {{sr|Użyjmy dziś żywota}}
* {{sr|Żal, żal za jedyną}}
}}
|komórka 5_1={{Pudełko komórkowe 1|tytuł= Piosenki biesiadne
|grafika=
|tekst= * {{sr|Dajcież mi kielicha}}
* {{sr|Góralu, czy ci nie żal}}
* {{sr|Kiedy nam się pora zdarza}}
* {{sr|Kochajmy się}}
* {{sr|Komu dzwonią, temu dzwonią}}
* {{sr|Kurdesz}}
* {{sr|Małgorzatka}}
* {{sr|Pije Kuba do Jakuba}}
* {{sr|Precz, precz od nas smutek wszelki}}
* {{sr|Szlachetne zdrowie}}
* {{sr|Szła dzieweczka}}
* {{sr|Szynkareczko, szafareczko}}
* {{sr|Ten mem zdaniem dobrze żyje}}
* {{sr|Wdzięczna miłości kochanej szklanice }}
* {{sr|Wesoło, bracia, wesoło}}
}}
|komórka 5_2={{Pudełko komórkowe 3|tytuł= Pieśni zadumy i tęsknoty. Pożegnania
|grafika=
|tekst= * {{sr|Znaszli ten kraj}}
'''Tęsknota za ukochaną/ukochanym:'''
* {{sr|Gdym z kozaki szedł na boje}}
* {{sr|Za Niemen het precz}}
* {{sr|Żal, żal za jedyną}}
'''Tęsknota za przeszłością:'''
* {{sr|Cieszmy się bracia nadzieją}}
* {{sr|Na dolinie zawierucha}}
* {{sr|Nie tak in illo tempore bywało|Nie tak ''in illo tempore'' bywało}}
* {{sr|O, gwiazdeczko, coś błyszczała}}
* {{sr|Ozdobo twarzy, pokrętne wąsy}}
* {{sr|W tył wyloty, w górę wąsy}}
* {{sr|Zagrzmiał mazur, w górę wąsy}}
'''Tęsknota za krajem rodzinnym:'''
* {{sr|Góralu, czy ci nie żal}}
* {{sr|Pożegnanie Childe Harolda}}
* {{sr|Sokół}}
* {{sr|W głos serdeczna dumka płynie}}
}}
|komórka 6_1={{Pudełko komórkowe 2
|tytuł= Dumki i ballady
|grafika=
|tekst='''Ballady literackie:'''
* {{sr|Alpuhara}}
* {{sr|Lilie}}
* {{sr|Obie kochał pan}}
* {{sr|Świtezianka}}
* {{sr|Trzech Budrysów}}
'''Ballady ludowe:'''
* {{sr|A w Krakowie na ulicy}}
* {{sr|Haniu moja, pójdź do domu}}
* {{sr|Krakowianka i kat}}
* {{sr|Podolanka}}
* {{sr|Przyjechał Jasieńko}}
* {{sr|Służył Jasio u pana}}
* {{sr|Stała nam się nowina}} → {{sr|Lilie}}
* {{sr|W okolicznem mieście}}
* {{sr|Zielony dzban}}
}}
|komórka 6_2={{Pudełko komórkowe 4|tytuł= Piosenki wędrówkowe
|grafika=
|tekst=
* {{sr|Zielona łączka, żółty na niej kwiat}}
'''Piosenki łowieckie:'''
* {{sr|Hej hej, hej hej, do kniej, do kniej}}
* {{sr|Pojedziemy na łów}}
* {{sr|Siedzi sobie zając pod miedzą}}
* {{sr|Szła dzieweczka}}
* {{sr|Śród opok i jarów}}
* {{sr|Zajączek}}
'''Piosenki żeglarskie:'''
* {{sr|Choć burza huczy wkoło nas}}
* {{sr|Hej, żeglujże, żeglarzu}}
* {{sr|W morzu przegląda się gwiazda srebrzysta}}
* {{sr|Wesoło żeglujmy, wesoło}}
'''Piosenki o górach:'''
* {{sr|Czerwony pas}}
* {{sr|Góralu, czy ci nie żal}}
* {{sr|Jak dobrze nam}}
'''Piosenki zbójeckie'''
* {{sr|Hej, bracia opryszki}}
* {{sr|Me lube dziewczę}}
}}
|komórka 7_1={{Pudełko komórkowe 1|tytuł= Hymny i hejnały
|grafika=
|tekst= * {{sr|Mazurek Dąbrowskiego}} (hymn Polski)
* {{sr|Deutschlandlied}} (hymn Niemiec)
* {{sr|God Save the King}} (hymn Wielkiej Brytanii)
* {{sr|Hatikvah}} (hymn Izraela)
* {{sr|Marsylianka}} (hymn Francji)
* {{sr|Oda do radości}} (hymn Unii Europejskiej)
* {{sr|Ще не вмерла України і слава, і воля}} (hymn Ukrainy)
}}
|komórka 7_2={{Pudełko komórkowe 3|tytuł= Pieśni (o) pracy
|grafika=
|tekst=* {{sr|Do pracy, razem do pracy}}
* {{sr|Nad mularską profesyą}} (pieśń murarza)
* {{sr|Polski przemysł niech nam żyje}}
* {{sr|Prząśniczka}}
* {{sr|Rześko, żwawo, stuku puku}} (pieśń kowala)
* {{sr|Słynie Gopło i Kruszwica}} (piosnka kołodzieja)
* {{sr|W ogrodzie na wodzie}} (przegląd zawodów)
* {{sr|Wszystkich dziś ciekawość budzi}} (piosnka furmana)
}}
|komórka 8_1={{Pudełko komórkowe 2
|tytuł= O muzyce
|grafika=
|tekst=* {{sr|Lutni moja ulubiona}}
* {{sr|Marzenie o grajku }}
* {{sr|Taniec}}
* {{sr|Wezmę ja skrzypki}}
}}
|komórka 8_2={{Pudełko komórkowe 4|tytuł= Pieśni i piosenki o śmierci
|grafika=
|tekst=* {{sr|Był Matysek chłop przed laty}}
* {{sr|Komu dzwonią, temu dzwonią}}
* {{sr|Umarł Maciek, umarł}}
}}
|komórka 9_1={{Pudełko komórkowe 1|tytuł= Pieśni i piosenki po angielsku
|grafika=
|tekst={{Projekt siostrzany|projekt=wikibooks|tekst=Zobacz w [[:en:Main_Page|anglojęzycznych Wikibooks]] podręcznik '''[[:en:Songbook/Content#123|Songbook]]'''}}
* {{sr|Auld Lang Syne}}
* {{sr|God Save the King}} (hymn Wielkiej Brytanii)
* {{sr|Greensleeves}}
}}
|komórka 9_2={{Pudełko komórkowe 3|tytuł= Śpiewy w języku łacińskim
|grafika=
|tekst=* {{sr|Gaude mater}}
* {{sr|Gaudeamus igitur}}
* {{sr|Integer vitae}}
* {{sr|Veni Creator}}
}}
|komórka 10_1={{Pudełko komórkowe 2
|tytuł= Pieśni i piosenki po niemiecku
|grafika=
|tekst={{Projekt siostrzany|projekt=wikibooks|tekst=Zobacz w [[:de:Hauptseite|niemieckojęzycznych Wikibooks]] podręcznik '''[[:de:Liederbuch/_Inhalt#Lieder|Liederbuch]]'''}}
* {{sr|Deutschlandlied}} (hymn Niemiec)
* {{sr|Kołysanka Brahmsa }}
* {{sr|Oda do radości}}
}}
|komórka 10_2={{Pudełko komórkowe 4|tytuł= Pieśni i piosenki rusińskie i ukraińskie
|grafika=
|tekst=* {{sr|Ne chody Hryciu na weczernyci}}
* {{sr|Oj ty horo kamennaja}}
* {{sr|Дзюба}}
* {{sr|Їхав козак за Дунай}}
* {{sr|Ще не вмерла України і слава, і воля}}
}}
}}
<noinclude>{{ProstaStronaKoniec}}</noinclude>
50dxaouwmyhbqv3aixgeo1pkelczsui
Moduł:StronicowyParser/StronaSubst
828
58521
551797
543542
2026-08-14T17:00:57Z
Persino
2851
551797
Scribunto
text/plain
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun,NieFun,FunRozdzial,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
if((pelnanazwastrony) or ((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu)))then
local args_nowe;
if(not pelnanazwastrony)then
args_nowe={
["nazwa przestrzeni nazw"]=nil,
["nazwa jednostki"]=nil,
};
else
args_nowe={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]=pelnanazwastrony,
};
end;
if((not tab_lista_artykulow_w_ksiazce_spis)or(pelnanazwastrony))then
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki,false);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(tabela_listy_danych_analizy_ksiazki);
nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu_podana;
nazwa_ksiazki=self_zmienna.nazwa_woluminu_podana;
nazwa_artykulu=self_zmienna.nazwa_podstrony_woluminu_podana;
else
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
else
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args={}},tabela_listy_danych_analizy_ksiazki,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
end;
local parametry_modul=require("Module:Parametry");
if(tab_lista_artykulow_w_ksiazce_spis)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or((nazwa_przestrzeni==nazwy_np_modul.Wikibooks)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^Brudnopis/([^/]+)$")))
or((nazwa_przestrzeni==nazwy_np_modul.User)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))))then
-----
local tab_artykul={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(not tab_artykul[artykul_bez_naglowka_w_bazie])then
tab_artykul[artykul_bez_naglowka_w_bazie]=true;
end;
end;
end;
end;
--local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");
if(
((nazwa_artykulu~="Wersja do druku")and(nazwa_ksiazki~=nazwa_artykulu))
and(tab_artykul[nazwa_artykulu])
)then
return NieFun(nil);
end;
-----
if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Spis rzeczy")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
if((nazwa_ksiazki==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
else
local function StronaRozdzial()
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
if(rozdzial==nazwa_artykulu)then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
return;
end;
if(not FunRozdzial)then
local val=StronaRozdzial();
if(val)then return val;end;
else
local val=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(val)then return val;end;
end;
end;
end;
end;
end
return NieFun(nil);
end;
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwy_modul=require("Module:Nazwy");
local toc_nowe={};
local tab_powtarzane={};
local function Powtarzane(rozdzial)
local b=1;
for i=1,#tab_powtarzane,1 do
if(tab_powtarzane[i]==rozdzial)then
b=b+1;
end;
end;
tab_powtarzane[#tab_powtarzane+1]=rozdzial;
return b;
end;
local function CzyStronaSubst()
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
end;
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
szablon=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(nazwa_szablonu=="StronaSubst")then return StronaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
if(nazwa_szablonu=="KsiążkaSubst")then return KsiazkaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
end);
end;
end;
end;
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local str="<div style=\"display:block;\" class=\"rozdział_książki\">\n";
local parametry_modul=require("Module:Parametry");
local czy_link=parametry_modul.CzyTak(link);
local adres=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..strona
if(not czy_link)then
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(naglowek_strony,p);
else
local linki_modul=require("Module:Linki");
local str_link=linki_modul["Link wewnętrzny"]{
["strona"]=adres,
["nazwa"]=naglowek_strony,
};
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(str_link,p);
end;
if(postep)then
str=str.."<div class=\"postęp_ładowania_artykułu\"><div class=\"pasek_postępu\"></div> <span style=\"color:blue\">Ładuję artykuł...</span></div>";
end;
str=str.."<div class=\"strona_subst\" style=\"display:"..((not postep)and "block" or "none")..";\">"..((not czy_link) and (adres) or "").."</div>\n";
str=str.."</div>";
return str;
end;
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local tabela_nazw_strony=tabela_parametrowa_strony[1];
local czy_table_nazw_strony=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tabela_nazw_strony);
local tabela_nazw_strony_parametr=czy_table_nazw_strony and tabela_nazw_strony[1] or tabela_nazw_strony;
local nazwa_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,false);
-------
if((nazwa_strony~="Wersja do druku")and(nazwa_ksiazki~=nazwa_strony))then
local nazwa_strony_z_naglowkiem=naglowki and stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tabela_nazw_strony_parametr,true) or nazwa_strony;
local tab_naglowek_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,true);
local naglowek;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_naglowek_strony))then
naglowek=parametry_modul["CzyTakCiąg"](tab_naglowek_strony[3]) and tab_naglowek_strony[3] or nil;
end;
if(not naglowki or not naglowek)then
naglowek=mw.ustring.match(nazwa_strony_z_naglowkiem,"/([^/]*)$") or nazwa_strony_z_naglowkiem;
end;
local liczba_powtarzanego=Powtarzane(naglowek);
if((naglowki or (not tablica_stron[nazwa_strony]))and(not sekcje))then
if(not naglowki)then
tablica_stron[nazwa_strony]=true;
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony_z_naglowkiem,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
local specjalne_modul=require("Module:Specjalne");
local function SpisTOC(toc,licznik, element_w_tablicy)
local naglowek_rozdzialu=element_w_tablicy[1][2];
local numer_link_naglowek=Powtarzane(naglowek_rozdzialu);
local link=nazwa_strony.."#"..element_w_tablicy[1][1];
local poziom_rozdzialu=element_w_tablicy[2];
local poziom_rozdzialu_sekcji=HNumer(poziom_rozdzialu+m_roznica);
local id_naglowka,naglowek_rozdzialu=specjalne_modul["PrzetwórzNagłówek"](naglowek_rozdzialu,true,true);
table.insert(toc_nowe,{{id_naglowka..((numer_link_naglowek>1) and ("_"..numer_link_naglowek) or ""), naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,naglowek_rozdzialu,nil,poziom_rozdzialu_sekcji,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
tablica_stron[nazwa_strony]=true;
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
if(tekst_rozwiniety_calego_artykulu)then
local szablonowe_modul=require("Module:Szablonowe");
local tablica_obiektow_strony_dany_modul_uzyskany;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_rozwiniety_calego_artykulu);
local tablica_obiektow_strony_danych_kodow_specjalnych_modul;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
-----
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,false,true,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);
if(toc)then
local nazwa_strony_naglowka=toc.nazwa_strony;
for licznik, element_w_tablicy in ipairs(toc)do
SpisTOC(toc,licznik, element_w_tablicy);
end;
end;
end;
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy)
local m=tab_lista[1][2][1] or 0;
local czy_centrowany=false;
local czy_srednikowy=false;
if(m>0)then
local czy_centrowany=tab_lista[1][2][4] or false;
if(czy_centrowany)then
poziom_rozdzial_dodatni=0;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_centrowany=2;
poziom_rozdzial_srednikowy=0;
czy_centrowany=true;
else
poziom_rozdzial_dodatni=m;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_srednikowy=0;
end;
elseif(m==0)then
licznik_zerowy_rozdzial=1;
else
local przedrostek_listy=tab_lista[1][2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
poziom_rozdzial_srednikowy=math.abs(m);
poziom_rozdzial_zerowy=0;
czy_srednikowy=true;
end;
end;
end;
m=(((not czy_centrowany)and(not czy_srednikowy))and(math.abs(m)) or 0)+((m<=0) and (poziom_rozdzial_dodatni+poziom_rozdzial_srednikowy+poziom_rozdzial_zerowy) or 0)+poziom_rozdzial_centrowany;
return m;
end;
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)
local czy_srednikowy=false;
local roznica=(tabela_parametrowa_strony[2][1]>0)and tabela_parametrowa_strony[2][1] or 0;
if(roznica==0)then
liczba_poziomu_zerowego_dla_strony=1;
elseif(roznica>0)then
local przedrostek_listy=tabela_parametrowa_strony[2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
liczba_poziomu_zerowego_dla_strony=0;
liczba_poziomu_srednikowego_dla_strony=roznica;
czy_srednikowy=true;
end;
end;
end;
local m_roznica=m+((not czy_srednikowy) and roznica or 0)+liczba_poziomu_zerowego_dla_strony+liczba_poziomu_srednikowego_dla_strony;
return m_roznica;
end;
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
local m_uzyskane=HNumer(m_roznica);
--local PobierzParametr=parametry_modul.PobierzParametr(tabela_parametrowa_strony[1]);
--local nazwa_strony_parametr=PobierzParametr(1);
--local nazwa_strony,_=mw.ustring.gsub(nazwa_strony_parametr,"^([^#]*)(#.*)$","%1");
----
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
----
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local strona=tabela_parametrow_szablonu[1];
local link=tabela_parametrow_szablonu["link"];
local parametry_modul=require("Module:Parametry");
strona=parametry_modul["Odstępy"]{nazwa=strona,["wewnątrz"]="tak",};
local czy_link=parametry_modul.CzyTak(link);
if(czy_artykul_aktualny)then
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]={};
end;
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]={};
end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_nazwa_ksiazki[strona])then
tablica_nazwa_ksiazki[strona]={};
end;
if(tablica_nazwa_ksiazki[strona][(czy_link and "tak" or "")])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
if((strona=="Wersja do druku")or(strona==nazwa_ksiazki))then return "";end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]
)then
return glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")];
end;
local naglowek=mw.ustring.match(strona,"/([^/]*)$") or strona;
--end;
local liczba_powtarzanego=Powtarzane(naglowek);
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
local str=StronaSubstParametr(strona,naglowek,link,nil,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
end;
return str;
end;
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(tablica_nazwa_ksiazki[substrona])then
return;
end;
end;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tablica_stron={};
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local ktore=tonumber(tabela_parametrow_szablonu["które"]) or 1;
local licznik_numer_tego_samego_rozdzialu=1;
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
local wikikod="";
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,substrona);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod;
end;
return wikikod;
end;
licznik_numer_tego_samego_rozdzialu=licznik_numer_tego_samego_rozdzialu+1;
end;
end;
return "";
end;
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
mw.log(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local wikikod="<div class=\"klasa_książki\">";
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local tablica_stron={};
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
wikikod=wikikod.."<div class=\"klasa_naglowka klasa_nagłówka\">";
----
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
----
if((m~=0)and(rozdzial)and(type(rozdzial)=="string")and(rozdzial~="")and(rozdzial~="Spis treści")and(rozdzial~="Bibliografia")and(rozdzial~="Zobacz też")and(rozdzial~="Inne")and(rozdzial~="Licencja")
)then
local m_uzyskane=HNumer(m);
wikikod=((wikikod~="")and (wikikod.."\n") or "")..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,m_uzyskane);
local liczba_powtarzanego=Powtarzane(rozdzial);
table.insert(toc_nowe,{{mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), rozdzial,},m_uzyskane,})
end;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
wikikod=wikikod.."</div>";
end;
wikikod=wikikod.."</div>";
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod;
end;
return wikikod;
end;
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
return "tak";
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local ksiazkowe_modul=require("Module:Książkowe");
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
czy_artykul_aktualny=true;
local tabela_listy_danych_analizy_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki;
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
else
local tabela_nazw={};
local pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
tabela_nazw={};
nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](pelnanazwastrony,tabela_nazw);
nazwa_przestrzeni_ksiazki=ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and ksiazkowe_modul["NazwaTytułuKsiążki"](pelnanazwastrony,tabela_nazw) or ksiazkowe_modul["NazwaKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelnanazwastrony,tabela_nazw);
end;
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local spis_artykulow=nil;local pelnanazwastrony;local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
spis_artykulow=spis;
czy_artykul_aktualny=true;
else
local tabela_nazw={};
pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
end;
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end);
CzyStronaSubst();
glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
return tekst_rozwiniety_calego_artykulu;
end;
return p;
8nl3bluq933a8duty6mi24g2lmn93rq
551798
551797
2026-08-14T17:03:04Z
Persino
2851
551798
Scribunto
text/plain
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun,NieFun,FunRozdzial,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
if((pelnanazwastrony) or ((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu)))then
local args_nowe;
if(not pelnanazwastrony)then
args_nowe={
["nazwa przestrzeni nazw"]=nil,
["nazwa jednostki"]=nil,
};
else
args_nowe={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]=pelnanazwastrony,
};
end;
if((not tab_lista_artykulow_w_ksiazce_spis)or(pelnanazwastrony))then
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki,false);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(tabela_listy_danych_analizy_ksiazki);
nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu_podana;
nazwa_ksiazki=self_zmienna.nazwa_woluminu_podana;
nazwa_artykulu=self_zmienna.nazwa_podstrony_woluminu_podana;
else
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
else
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args={}},tabela_listy_danych_analizy_ksiazki,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
end;
local parametry_modul=require("Module:Parametry");
if(tab_lista_artykulow_w_ksiazce_spis)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or((nazwa_przestrzeni==nazwy_np_modul.Wikibooks)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^Brudnopis/([^/]+)$")))
or((nazwa_przestrzeni==nazwy_np_modul.User)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))))then
-----
local tab_artykul={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(not tab_artykul[artykul_bez_naglowka_w_bazie])then
tab_artykul[artykul_bez_naglowka_w_bazie]=true;
end;
end;
end;
end;
--local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");
if(
((nazwa_artykulu~="Wersja do druku")and(nazwa_ksiazki~=nazwa_artykulu))
and(tab_artykul[nazwa_artykulu])
)then
return NieFun(nil);
end;
-----
if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Spis rzeczy")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
if((nazwa_ksiazki==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
else
local function StronaRozdzial()
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
if(rozdzial==nazwa_artykulu)then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
return;
end;
if(not FunRozdzial)then
local val=StronaRozdzial();
if(val)then return val;end;
else
local val=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(val)then return val;end;
end;
end;
end;
end;
end
return NieFun(nil);
end;
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwy_modul=require("Module:Nazwy");
local toc_nowe={};
local tab_powtarzane={};
local function Powtarzane(rozdzial)
local b=1;
for i=1,#tab_powtarzane,1 do
if(tab_powtarzane[i]==rozdzial)then
b=b+1;
end;
end;
tab_powtarzane[#tab_powtarzane+1]=rozdzial;
return b;
end;
local function CzyStronaSubst()
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
end;
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
szablon=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(nazwa_szablonu=="StronaSubst")then return StronaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
if(nazwa_szablonu=="KsiążkaSubst")then return KsiazkaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
end);
end;
end;
end;
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local str="<div style=\"display:block;\" class=\"rozdział_książki\">\n";
local parametry_modul=require("Module:Parametry");
local czy_link=parametry_modul.CzyTak(link);
local adres=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..strona
if(not czy_link)then
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(naglowek_strony,p);
else
local linki_modul=require("Module:Linki");
local str_link=linki_modul["Link wewnętrzny"]{
["strona"]=adres,
["nazwa"]=naglowek_strony,
};
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(str_link,p);
end;
if(postep)then
str=str.."<div class=\"postęp_ładowania_artykułu\"><div class=\"pasek_postępu\"></div> <span style=\"color:blue\">Ładuję artykuł...</span></div>";
end;
str=str.."<div class=\"strona_subst\" style=\"display:"..((not postep)and "block" or "none")..";\">"..((not czy_link) and (adres) or "").."</div>\n";
str=str.."</div>";
return str;
end;
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local tabela_nazw_strony=tabela_parametrowa_strony[1];
local czy_table_nazw_strony=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tabela_nazw_strony);
local tabela_nazw_strony_parametr=czy_table_nazw_strony and tabela_nazw_strony[1] or tabela_nazw_strony;
local nazwa_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,false);
-------
if((nazwa_strony~="Wersja do druku")and(nazwa_ksiazki~=nazwa_strony))then
local nazwa_strony_z_naglowkiem=naglowki and stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tabela_nazw_strony_parametr,true) or nazwa_strony;
local tab_naglowek_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,true);
local naglowek;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_naglowek_strony))then
naglowek=parametry_modul["CzyTakCiąg"](tab_naglowek_strony[3]) and tab_naglowek_strony[3] or nil;
end;
if(not naglowki or not naglowek)then
naglowek=mw.ustring.match(nazwa_strony_z_naglowkiem,"/([^/]*)$") or nazwa_strony_z_naglowkiem;
end;
local liczba_powtarzanego=Powtarzane(naglowek);
if((naglowki or (not tablica_stron[nazwa_strony]))and(not sekcje))then
if(not naglowki)then
tablica_stron[nazwa_strony]=true;
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony_z_naglowkiem,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
local specjalne_modul=require("Module:Specjalne");
local function SpisTOC(toc,licznik, element_w_tablicy)
local naglowek_rozdzialu=element_w_tablicy[1][2];
local numer_link_naglowek=Powtarzane(naglowek_rozdzialu);
local link=nazwa_strony.."#"..element_w_tablicy[1][1];
local poziom_rozdzialu=element_w_tablicy[2];
local poziom_rozdzialu_sekcji=HNumer(poziom_rozdzialu+m_roznica);
local id_naglowka,naglowek_rozdzialu=specjalne_modul["PrzetwórzNagłówek"](naglowek_rozdzialu,true,true);
table.insert(toc_nowe,{{id_naglowka..((numer_link_naglowek>1) and ("_"..numer_link_naglowek) or ""), naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,naglowek_rozdzialu,nil,poziom_rozdzialu_sekcji,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
tablica_stron[nazwa_strony]=true;
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
if(tekst_rozwiniety_calego_artykulu)then
local szablonowe_modul=require("Module:Szablonowe");
local tablica_obiektow_strony_dany_modul_uzyskany;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_rozwiniety_calego_artykulu);
local tablica_obiektow_strony_danych_kodow_specjalnych_modul;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
-----
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,false,true,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);
if(toc)then
local nazwa_strony_naglowka=toc.nazwa_strony;
for licznik, element_w_tablicy in ipairs(toc)do
SpisTOC(toc,licznik, element_w_tablicy);
end;
end;
end;
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy)
local m=tab_lista[1][2][1] or 0;
local czy_centrowany=false;
local czy_srednikowy=false;
if(m>0)then
local czy_centrowany=tab_lista[1][2][4] or false;
if(czy_centrowany)then
poziom_rozdzial_dodatni=0;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_centrowany=2;
poziom_rozdzial_srednikowy=0;
czy_centrowany=true;
else
poziom_rozdzial_dodatni=m;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_srednikowy=0;
end;
elseif(m==0)then
licznik_zerowy_rozdzial=1;
else
local przedrostek_listy=tab_lista[1][2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
poziom_rozdzial_srednikowy=math.abs(m);
poziom_rozdzial_zerowy=0;
czy_srednikowy=true;
end;
end;
end;
m=(((not czy_centrowany)and(not czy_srednikowy))and(math.abs(m)) or 0)+((m<=0) and (poziom_rozdzial_dodatni+poziom_rozdzial_srednikowy+poziom_rozdzial_zerowy) or 0)+poziom_rozdzial_centrowany;
return m;
end;
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)
local czy_srednikowy=false;
local roznica=(tabela_parametrowa_strony[2][1]>0)and tabela_parametrowa_strony[2][1] or 0;
if(roznica==0)then
liczba_poziomu_zerowego_dla_strony=1;
elseif(roznica>0)then
local przedrostek_listy=tabela_parametrowa_strony[2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
liczba_poziomu_zerowego_dla_strony=0;
liczba_poziomu_srednikowego_dla_strony=roznica;
czy_srednikowy=true;
end;
end;
end;
local m_roznica=m+((not czy_srednikowy) and roznica or 0)+liczba_poziomu_zerowego_dla_strony+liczba_poziomu_srednikowego_dla_strony;
return m_roznica;
end;
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
local m_uzyskane=HNumer(m_roznica);
--local PobierzParametr=parametry_modul.PobierzParametr(tabela_parametrowa_strony[1]);
--local nazwa_strony_parametr=PobierzParametr(1);
--local nazwa_strony,_=mw.ustring.gsub(nazwa_strony_parametr,"^([^#]*)(#.*)$","%1");
----
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
----
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local strona=tabela_parametrow_szablonu[1];
local link=tabela_parametrow_szablonu["link"];
local parametry_modul=require("Module:Parametry");
strona=parametry_modul["Odstępy"]{nazwa=strona,["wewnątrz"]="tak",};
local czy_link=parametry_modul.CzyTak(link);
if(czy_artykul_aktualny)then
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]={};
end;
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]={};
end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_nazwa_ksiazki[strona])then
tablica_nazwa_ksiazki[strona]={};
end;
if(tablica_nazwa_ksiazki[strona][(czy_link and "tak" or "")])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
if((strona=="Wersja do druku")or(strona==nazwa_ksiazki))then return "";end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]
)then
return glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")];
end;
local naglowek=mw.ustring.match(strona,"/([^/]*)$") or strona;
--end;
local liczba_powtarzanego=Powtarzane(naglowek);
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
local str=StronaSubstParametr(strona,naglowek,link,nil,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
end;
return str;
end;
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(tablica_nazwa_ksiazki[substrona])then
return;
end;
end;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tablica_stron={};
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local ktore=tonumber(tabela_parametrow_szablonu["które"]) or 1;
local licznik_numer_tego_samego_rozdzialu=1;
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
local wikikod="";
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,substrona);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod;
end;
return wikikod;
end;
licznik_numer_tego_samego_rozdzialu=licznik_numer_tego_samego_rozdzialu+1;
end;
end;
return "";
end;
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local wikikod="<div class=\"klasa_książki\">";
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local tablica_stron={};
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
wikikod=wikikod.."<div class=\"klasa_naglowka klasa_nagłówka\">";
----
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
----
if((m~=0)and(rozdzial)and(type(rozdzial)=="string")and(rozdzial~="")and(rozdzial~="Spis treści")and(rozdzial~="Bibliografia")and(rozdzial~="Zobacz też")and(rozdzial~="Inne")and(rozdzial~="Licencja")
)then
local m_uzyskane=HNumer(m);
wikikod=((wikikod~="")and (wikikod.."\n") or "")..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,m_uzyskane);
local liczba_powtarzanego=Powtarzane(rozdzial);
table.insert(toc_nowe,{{mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), rozdzial,},m_uzyskane,})
end;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
wikikod=wikikod.."</div>";
end;
wikikod=wikikod.."</div>";
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod;
end;
return wikikod;
end;
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
return "tak";
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local ksiazkowe_modul=require("Module:Książkowe");
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
czy_artykul_aktualny=true;
local tabela_listy_danych_analizy_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki;
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
else
local tabela_nazw={};
local pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
tabela_nazw={};
nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](pelnanazwastrony,tabela_nazw);
nazwa_przestrzeni_ksiazki=ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and ksiazkowe_modul["NazwaTytułuKsiążki"](pelnanazwastrony,tabela_nazw) or ksiazkowe_modul["NazwaKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelnanazwastrony,tabela_nazw);
end;
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local spis_artykulow=nil;local pelnanazwastrony;local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
spis_artykulow=spis;
czy_artykul_aktualny=true;
else
local tabela_nazw={};
pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
end;
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end);
CzyStronaSubst();
glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
return tekst_rozwiniety_calego_artykulu;
end;
return p;
ftqtyq69wf1of8k1bmr1h0uj2gux6nl
551799
551798
2026-08-14T17:16:47Z
Persino
2851
551799
Scribunto
text/plain
local p={};
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun,NieFun,FunRozdzial,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local nazwy_modul=require("Module:Nazwy");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
if((pelnanazwastrony) or ((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu)))then
local args_nowe;
if(not pelnanazwastrony)then
args_nowe={
["nazwa przestrzeni nazw"]=nil,
["nazwa jednostki"]=nil,
};
else
args_nowe={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]=pelnanazwastrony,
};
end;
if((not tab_lista_artykulow_w_ksiazce_spis)or(pelnanazwastrony))then
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu{args=args_nowe};
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args=args_nowe},tabela_listy_danych_analizy_ksiazki,false);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
local self_zmienna,tabela_listy_danych_analizy_ksiazki=stronicowyparser_potrzebne_modul:Self(tabela_listy_danych_analizy_ksiazki);
nazwa_przestrzeni=self_zmienna.nazwa_przestrzeni_podana;
nazwa_przestrzeni_ksiazki=self_zmienna.nazwa_przestrzeni_woluminu_podana;
nazwa_ksiazki=self_zmienna.nazwa_woluminu_podana;
nazwa_artykulu=self_zmienna.nazwa_podstrony_woluminu_podana;
else
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
end;
else
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni;local lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki;local tab_lista_artykulow_w_ksiazce;local tab_lista_zmiennych_w_artykule;
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,lista_artykulow_w_ksiazkach_w_danej_przestrzeni_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu({args={}},tabela_listy_danych_analizy_ksiazki,false,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not tab_lista_artykulow_w_ksiazce_spis)then
--local blad_modul=require("Module:Błąd");
--return blad_modul.error{tag="span",tekst="Nie znalazłem takiej książki."};
return;
end;
end;
local parametry_modul=require("Module:Parametry");
if(tab_lista_artykulow_w_ksiazce_spis)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or((nazwa_przestrzeni==nazwy_np_modul.Wikibooks)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^Brudnopis/([^/]+)$")))
or((nazwa_przestrzeni==nazwy_np_modul.User)and(mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$"))))then
-----
local tab_artykul={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(not tab_artykul[artykul_bez_naglowka_w_bazie])then
tab_artykul[artykul_bez_naglowka_w_bazie]=true;
end;
end;
end;
end;
--local ksiazka=mw.ustring.match(nazwa_ksiazki,"([^/]+)$");
if(
((nazwa_artykulu~="Wersja do druku")and(nazwa_ksiazki~=nazwa_artykulu))
and(tab_artykul[nazwa_artykulu])
)then
return NieFun(nil);
end;
-----
if((nazwa_artykulu~="Spis treści")and(nazwa_artykulu~="Spis rzeczy")and(nazwa_artykulu~="Bibliografia")and(nazwa_artykulu~="Licencja"))then
if((nazwa_ksiazki==nazwa_artykulu)or(nazwa_artykulu=="Wersja do druku"))then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
else
local function StronaRozdzial()
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
if(rozdzial==nazwa_artykulu)then
return TakFun(tab_lista_artykulow_w_ksiazce_spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
return;
end;
if(not FunRozdzial)then
local val=StronaRozdzial();
if(val)then return val;end;
else
local val=FunRozdzial(tab_lista_artykulow_w_ksiazce_spis,nazwa_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(val)then return val;end;
end;
end;
end;
end;
end
return NieFun(nil);
end;
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwy_modul=require("Module:Nazwy");
local toc_nowe={};
local tab_powtarzane={};
local function Powtarzane(rozdzial)
local b=1;
for i=1,#tab_powtarzane,1 do
if(tab_powtarzane[i]==rozdzial)then
b=b+1;
end;
end;
tab_powtarzane[#tab_powtarzane+1]=rozdzial;
return b;
end;
local function CzyStronaSubst()
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
end;
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)
local szablonowe_modul=require("Module:Szablonowe");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony);
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
szablon=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(nazwa_szablonu=="StronaSubst")then return StronaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
if(nazwa_szablonu=="KsiążkaSubst")then return KsiazkaSubst(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod);end;
end);
end;
end;
end;
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local str="<div style=\"display:block;\" class=\"rozdział_książki\">\n";
local parametry_modul=require("Module:Parametry");
local czy_link=parametry_modul.CzyTak(link);
local adres=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..strona
if(not czy_link)then
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(naglowek_strony,p);
else
local linki_modul=require("Module:Linki");
local str_link=linki_modul["Link wewnętrzny"]{
["strona"]=adres,
["nazwa"]=naglowek_strony,
};
str=str..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(str_link,p);
end;
if(postep)then
str=str.."<div class=\"postęp_ładowania_artykułu\"><div class=\"pasek_postępu\"></div> <span style=\"color:blue\">Ładuję artykuł...</span></div>";
end;
str=str.."<div class=\"strona_subst\" style=\"display:"..((not postep)and "block" or "none")..";\">"..((not czy_link) and (adres) or "").."</div>\n";
str=str.."</div>";
return str;
end;
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local tabela_nazw_strony=tabela_parametrowa_strony[1];
local czy_table_nazw_strony=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tabela_nazw_strony);
local tabela_nazw_strony_parametr=czy_table_nazw_strony and tabela_nazw_strony[1] or tabela_nazw_strony;
local nazwa_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,false);
-------
if((nazwa_strony~="Wersja do druku")and(nazwa_ksiazki~=nazwa_strony))then
local nazwa_strony_z_naglowkiem=naglowki and stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tabela_nazw_strony_parametr,true) or nazwa_strony;
local tab_naglowek_strony=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tabela_nazw_strony_parametr,true);
local naglowek;
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_naglowek_strony))then
naglowek=parametry_modul["CzyTakCiąg"](tab_naglowek_strony[3]) and tab_naglowek_strony[3] or nil;
end;
if(not naglowki or not naglowek)then
naglowek=mw.ustring.match(nazwa_strony_z_naglowkiem,"/([^/]*)$") or nazwa_strony_z_naglowkiem;
end;
local liczba_powtarzanego=Powtarzane(naglowek);
if((naglowki or (not tablica_stron[nazwa_strony]))and(not sekcje))then
if(not naglowki)then
tablica_stron[nazwa_strony]=true;
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony_z_naglowkiem,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif((sekcje)and(not tablica_stron[nazwa_strony]))then
local specjalne_modul=require("Module:Specjalne");
local function SpisTOC(toc,licznik, element_w_tablicy)
local naglowek_rozdzialu=element_w_tablicy[1][2];
local numer_link_naglowek=Powtarzane(naglowek_rozdzialu);
local link=nazwa_strony.."#"..element_w_tablicy[1][1];
local poziom_rozdzialu=element_w_tablicy[2];
local poziom_rozdzialu_sekcji=HNumer(poziom_rozdzialu+m_roznica);
local id_naglowka,naglowek_rozdzialu=specjalne_modul["PrzetwórzNagłówek"](naglowek_rozdzialu,true,true);
table.insert(toc_nowe,{{id_naglowka..((numer_link_naglowek>1) and ("_"..numer_link_naglowek) or ""), naglowek_rozdzialu,}, poziom_rozdzialu_sekcji, })
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(link,naglowek_rozdzialu,nil,poziom_rozdzialu_sekcji,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},m_uzyskane,})
tablica_stron[nazwa_strony]=true;
wikikod=((wikikod~="")and (wikikod.."\n") or "")..StronaSubstParametr(nazwa_strony,naglowek,nil,m_uzyskane,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local nazwa_modulu=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..((nazwa_przestrzeni_ksiazki~="")and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki.."/"..nazwa_strony;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
if(tekst_rozwiniety_calego_artykulu)then
local szablonowe_modul=require("Module:Szablonowe");
local tablica_obiektow_strony_dany_modul_uzyskany;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_dany_modul_uzyskany=szablonowe_modul:KodujWzoryMatematyczneTekstu(tekst_rozwiniety_calego_artykulu);
local tablica_obiektow_strony_danych_kodow_specjalnych_modul;
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_obiektow_strony_dany_modul_uzyskany);
-----
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(nil,tekst_rozwiniety_calego_artykulu,nazwa_modulu,false,true,nil,nil,nil,nil,nil,nil,tablica_obiektow_strony_dany_modul_uzyskany,nil,tablica_obiektow_strony_danych_kodow_specjalnych_modul,nil,true);
if(toc)then
local nazwa_strony_naglowka=toc.nazwa_strony;
for licznik, element_w_tablicy in ipairs(toc)do
SpisTOC(toc,licznik, element_w_tablicy);
end;
end;
end;
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy)
local m=tab_lista[1][2][1] or 0;
local czy_centrowany=false;
local czy_srednikowy=false;
if(m>0)then
local czy_centrowany=tab_lista[1][2][4] or false;
if(czy_centrowany)then
poziom_rozdzial_dodatni=0;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_centrowany=2;
poziom_rozdzial_srednikowy=0;
czy_centrowany=true;
else
poziom_rozdzial_dodatni=m;
poziom_rozdzial_zerowy=0;
poziom_rozdzial_srednikowy=0;
end;
elseif(m==0)then
licznik_zerowy_rozdzial=1;
else
local przedrostek_listy=tab_lista[1][2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
poziom_rozdzial_srednikowy=math.abs(m);
poziom_rozdzial_zerowy=0;
czy_srednikowy=true;
end;
end;
end;
m=(((not czy_centrowany)and(not czy_srednikowy))and(math.abs(m)) or 0)+((m<=0) and (poziom_rozdzial_dodatni+poziom_rozdzial_srednikowy+poziom_rozdzial_zerowy) or 0)+poziom_rozdzial_centrowany;
return m;
end;
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)
local czy_srednikowy=false;
local roznica=(tabela_parametrowa_strony[2][1]>0)and tabela_parametrowa_strony[2][1] or 0;
if(roznica==0)then
liczba_poziomu_zerowego_dla_strony=1;
elseif(roznica>0)then
local przedrostek_listy=tabela_parametrowa_strony[2][2];
if(przedrostek_listy)then
if(mw.ustring.match(przedrostek_listy,"^;+"))then
liczba_poziomu_zerowego_dla_strony=0;
liczba_poziomu_srednikowego_dla_strony=roznica;
czy_srednikowy=true;
end;
end;
end;
local m_roznica=m+((not czy_srednikowy) and roznica or 0)+liczba_poziomu_zerowego_dla_strony+liczba_poziomu_srednikowego_dla_strony;
return m_roznica;
end;
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
local m_uzyskane=HNumer(m_roznica);
--local PobierzParametr=parametry_modul.PobierzParametr(tabela_parametrowa_strony[1]);
--local nazwa_strony_parametr=PobierzParametr(1);
--local nazwa_strony,_=mw.ustring.gsub(nazwa_strony_parametr,"^([^#]*)(#.*)$","%1");
----
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
----
end;
end;
return tablica_stron,wikikod,toc_nowe;
end;
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local strona=tabela_parametrow_szablonu[1];
local link=tabela_parametrow_szablonu["link"];
local parametry_modul=require("Module:Parametry");
strona=parametry_modul["Odstępy"]{nazwa=strona,["wewnątrz"]="tak",};
local czy_link=parametry_modul.CzyTak(link);
if(czy_artykul_aktualny)then
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]={};
end;
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]={};
end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_nazwa_ksiazki[strona])then
tablica_nazwa_ksiazki[strona]={};
end;
if(tablica_nazwa_ksiazki[strona][(czy_link and "tak" or "")])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
if((strona=="Wersja do druku")or(strona==nazwa_ksiazki))then return "";end;
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona]
and glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]
)then
return glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")];
end;
local naglowek=mw.ustring.match(strona,"/([^/]*)$") or strona;
--end;
local liczba_powtarzanego=Powtarzane(naglowek);
table.insert(toc_nowe,{{mw.ustring.gsub(naglowek,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), naglowek,},1,})
local str=StronaSubstParametr(strona,naglowek,link,nil,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
end;
return str;
end;
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki]={};
end;
local tablica_nazwa_ksiazki=tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki];
if(tablica_nazwa_ksiazki[substrona])then
return;
end;
end;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tablica_stron={};
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local ktore=tonumber(tabela_parametrow_szablonu["które"]) or 1;
local licznik_numer_tego_samego_rozdzialu=1;
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
local wikikod="";
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInneRozdział"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][substrona]=wikikod;
end;
return wikikod;
end;
licznik_numer_tego_samego_rozdzialu=licznik_numer_tego_samego_rozdzialu+1;
end;
end;
return "";
end;
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(czy_artykul_aktualny)then
if(glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"])then
return;
end;
else
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"]={};
end;
local tablica_ksiazkasubstinne=glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"];
if(not tablica_ksiazkasubstinne[nazwa_przestrzeni])then
tablica_ksiazkasubstinne[nazwa_przestrzeni]={};
end;
local tablica_nazwa_przestrzeni=tablica_ksiazkasubstinne[nazwa_przestrzeni];
if(not tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki])then
tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki]={};
end;
local tablica_nazwa_przestrzeni_ksiazki=tablica_nazwa_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tablica_nazwa_przestrzeni_ksiazki[nazwa_ksiazki])then
return;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
local naglowki=parametry_modul.CzyTak(tabela_parametrow_szablonu["nagłówki"]);
local sekcje=parametry_modul.CzyTak(tabela_parametrow_szablonu["sekcje"]);
local postep=parametry_modul.CzyTak(tabela_parametrow_szablonu["postęp"]);
local wikikod="<div class=\"klasa_książki\">";
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local tablica_stron={};
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
wikikod=wikikod.."<div class=\"klasa_naglowka klasa_nagłówka\">";
----
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
----
if((m~=0)and(rozdzial)and(type(rozdzial)=="string")and(rozdzial~="")and(rozdzial~="Spis treści")and(rozdzial~="Bibliografia")and(rozdzial~="Zobacz też")and(rozdzial~="Inne")and(rozdzial~="Licencja")
)then
local m_uzyskane=HNumer(m);
wikikod=((wikikod~="")and (wikikod.."\n") or "")..stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,m_uzyskane);
local liczba_powtarzanego=Powtarzane(rozdzial);
table.insert(toc_nowe,{{mw.ustring.gsub(rozdzial,"[%s_]+","_")..((liczba_powtarzanego>1) and ("_"..liczba_powtarzanego) or ""), rozdzial,},m_uzyskane,})
end;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
wikikod=wikikod.."</div>";
end;
wikikod=wikikod.."</div>";
if(czy_artykul_aktualny)then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubst"]=wikikod;
else
glowna_tablica.tabela_listy_danych_analizy_ksiazki["KsiążkaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=wikikod;
end;
return wikikod;
end;
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
local ksiazkowe_modul=require("Module:Książkowe");
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local nazwa_przestrzeni;local nazwa_przestrzeni_ksiazki;local nazwa_ksiazki;local nazwa_artykulu;
local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
czy_artykul_aktualny=true;
local tabela_listy_danych_analizy_ksiazki=glowna_tablica.tabela_listy_danych_analizy_ksiazki;
nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
nazwa_artykulu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
else
local tabela_nazw={};
local pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NazwaPrzestrzeni"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
tabela_nazw={};
nazwa_przestrzeni=ksiazkowe_modul["NazwaPrzestrzeni"](pelnanazwastrony,tabela_nazw);
nazwa_przestrzeni_ksiazki=ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and ksiazkowe_modul["NazwaTytułuKsiążki"](pelnanazwastrony,tabela_nazw) or ksiazkowe_modul["NazwaKsiążki"](pelnanazwastrony,tabela_nazw);
nazwa_artykulu=ksiazkowe_modul["NazwaArtykułuKsiążki"](pelnanazwastrony,tabela_nazw);
end;
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local nazwa_przestrzeni_nazw=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
local spis_artykulow=nil;local pelnanazwastrony;local czy_artykul_aktualny;
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
spis_artykulow=spis;
czy_artykul_aktualny=true;
else
local tabela_nazw={};
pelnanazwastrony=(nazwa_przestrzeni_nazw or nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazwy))..":"..(nazwa_jednostki or nazwy_modul["NAZWASTRONY"](nil,tabela_nazwy));
end;
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end);
CzyStronaSubst();
glowna_tablica.tabela_listy_danych_analizy_ksiazki.TOC_StronaZbiorcza=toc_nowe;
return tekst_rozwiniety_calego_artykulu;
end;
return p;
ltk6nut3ibhd0r3uy7o9rjq5odzs442
Moduł:StronicowyParser/NumerLubNazwaArtykułówKsiążek
828
58936
551812
547829
2026-08-15T00:59:10Z
Persino
2851
551812
Scribunto
text/plain
local p={};
local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
local args=stronicowyparser_potrzebne_modul:Args(frame);
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]);
----
local dane=tonumber(args["dane"]);
if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end;
----
local artykul_spisu=args["spis"];
artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil;
local tab_artykul=(not naglowek)and {} or nil;
local poziomowo=parametry_modul.CzyTak(args["poziomowo"]);
local tab_poziomowo={};
local tab_poziomowo_1={};
local tab_poziomowo_2={};
local html_modul=require("Module:Html");
----
local function ParametrySzablonuPobierania()
if(not zbieraj_dane_wszystkie)then
local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil;
if(not typ)then
pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł";
else
pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1");
czy_nazwa=parametry_modul.CzyTak(args["nazwa"]);
end;
return function()
return {pierwszy_parametr_szablonu,czy_nazwa,dane,};
end;
end;
end;
local pierwszy_parametr_szablonu=ParametrySzablonuPobierania();
----
local ktory=(tonumber(args["który"]) or 1);
local i=(not poziomowo) and 1 or nil;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu);
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local HNumerPoziomow_4=nil;
local HNumerPoziomow_3=nil
local HNumerPoziomow_2=nil;
local HNumerPoziomow_1=nil;
local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow_1=nil;
local HNumerPoziomowNaglowkow_2=nil;
local tab_numer=poziomowo and {} or nil;
local tab_numer_baza_spis_tresci=nil;
local tab_numer_3=nil
local tab_numer_4=nil;--poziomowo and {} or nil;
local spis=false;
local pierwszy_dodatni_naglowek=nil;
local pierwszy_ujemny_naglowek=nil;
local poprzedni_poziom_znakowy_rozdzialu=nil;
local poprzedni_tab_poziomowo=nil;
local poziom_pierwszego_dodatniego_naglowka=0;
local poziom_pierwszego_ujemnego_naglowka=0;
local poziom_zerowego_naglowka=0;
local poziom_srednikowego_naglowka=0;
local ostatni_rozdzial_dodatni=nil;
local ostatni_rozdzial_centrowany=nil;
local pierwszy_rozdzial_dodatni=nil;
local glowny_dodatni_rozdzial=nil;
local glowny_ujemny_rozdzial=nil;
local spis_tresci=nil;
local poziom_pierwszego_ujemnego_spisu_tresci=nil;
local ostatni_poczatek_artykulu=nil;
local pierwszy_rowny_rozdzial=nil;
local rozdzial;
local czy_pierwszy_nilowy=nil;
local czy_nienilowy_rozdzial=nil;
local czy_pierwszy_nilowy_rozdzial=nil;
local czy_ostatni_rozdzial_jest_centrowany=nil;
local glowny_spis_tresci_lub_rozdzial_ksiazki=nil;
local poprz_poziom_rozdzialu_lub_artykulu=nil;
local poprz_numeracji_rozdzialu_lub_artykulu=nil;
local poprz_numer_rozdzialu_lub_artykulu=nil;
local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil;
local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil;
local staly_dodatek_rozdzialu=0;
----
local poziom_spisu_tresci_dodatek=nil;
----
local odejmnij_od_dwukropka=0;
-----
local czy_w_trakcie_dwukropkowania=nil;
-----
local numer_poprz=nil;
----
local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce;
tab_lista_artykulow_w_ksiazce={};
local function TabLista(tab_lista)
local max_ile=0;
for name,value in pairs(tab_lista)do
max_ile=math.max(max_ile,name);
end;
local function Iterator(tab_lista)
local p2=0;
local s=0;
local pp=0;
local function InneTablica(numer)
local p1=0;
return function()
if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then
p1=p1+1;
pp=pp+1;
return s,tab_lista[numer][p1];
end;
end;
end;
local function WszystkieInneTablica()
local tab={};
for i=1,max_ile-2,1 do
tab[i]=InneTablica(i+2);
end;
return function()
for i=1,max_ile-2,1 do
local wartosc,tab_artykul=tab[i]();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
end;
end;
end;
end;
--local p1=0;
--local p2=0;
--local s=0;
local iter_inne_tablice=WszystkieInneTablica();
return function()
s=s+1;
local wartosc,tab_artykul=iter_inne_tablice();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
elseif((tab_lista[2])and(tab_lista[2][p2+1]))then
p2=p2+1;
pp=pp+1;
return s,tab_lista[2][p2];
else
return nil;
end;
end;
end;
local tab={};
local iter=Iterator(tab_lista);
for s,artykul_w_bazie in iter do
tab[s]=artykul_w_bazie;
end;
return tab;
end;
for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do
if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end;
tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1];
tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista);
end;
----
local function ToNumberPoziomArtykulu(poziom_artykulu)
local numer_artykulu=tonumber(poziom_artykulu);
local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1;
return (numer_artykulu or 0),numer_dodatkowy;
end;
local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz)
if((not w_rozdziale)
and(poziom_zerowego_artykulu>0)
and(poziom_zerowego_naglowka>0))then
if(p>1)then
local czy_jest_nast=tab_lista_2[p-1];
if(czy_jest_nast)then
local numer=tonumber(tab_lista_2[p-1][2][1]);
if(numer>0)then
poziom_zerowego_artykulu=0;
end;
else
poziom_zerowego_artykulu=0;
end;
end;
elseif(poziom_zerowego_artykulu==0)then
poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz;
end;
return poziom_zerowego_artykulu;
end;
local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka)
if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0);
czy_w_trakcie_dwukropkowania=true;
elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=0;
czy_w_trakcie_dwukropkowania=nil;
end;
if(odejmnij_od_dwukropka>0)then
poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka;
if(poziom_artykulu<1)then
poziom_artykulu=1;
end;
end;
return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania;
end;
local function PoziomNumeracji(numeracja_artykulu)
if(numeracja_artykulu)then
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+","");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+",".");
local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false);
local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0);
return poziom_numeracji_artykulu;
end;
return 0;
end;
-----
local function UzyskajArtykul(artykul,pomin_link)
local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link)
or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link);
return artykul;
end;
----
local nazwa_spisu=nil;local numer_spisu=nil;
local prawdziwy_poziom_rozdzialu_poprz=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu;
local poziom_poczatku_rozdzialu=nil;
local poziom_znakowy_rozdzialu=nil;
local prawdziwy_poziom_rozdzialu=nil;
local poziom_naglowka=nil;
local poziom_naglowka_bez_poprawki=nil;
local numer_rozdzialu=nil;
local tab_numer_zapasowe=nil;
local poziom_numeracji_rozdzialu=nil;
local czy_jest_teraz_spis_tresci=nil;
local czy_rozdzial_centrowany=nil;
-----
local zbieraj_dane=true;
-----
czy_nienilowy_rozdzial=tab_lista[1][2][1];
poziom_rozdzialu=czy_nienilowy_rozdzial or 0;
----
rozdzial=tab_lista[1][1];
----
local czy_rozdzial_spisu=false;
if((m==1)and(not numer_spisu)and(not nazwa_spisu))then
if(czy_nienilowy_rozdzial==nil)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
elseif((m>2)and(numer_spisu)and(nazwa_spisu))then
if(poziom_rozdzialu==1)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
end;
-----
local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu)
if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0);
return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu;
elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
end;
local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu)
if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then
return 0;
elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0);
return dodatek;
elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0);
return dodatek;
end;
end;
local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami)
local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu)
return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu)
and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))
and((mw.ustring.match(poziom_poczatku_artykulu,"^:"))
or(mw.ustring.match(poziom_poczatku_artykulu,"^#"))
)
)or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))));
end;
if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then
local roznica=poziom_rozdzialu-poziom_artykulu;
if(roznica>=0)then
staly_poziom_rozdzialu_z_artykulami=roznica+1;
else
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami;
elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then
staly_poziom_rozdzialu_z_artykulami=0;
elseif(#poziom_poczatku_artykulu==0)then
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami;
end;
local function CzyWliczacBezPoziomowo(p,i)
if(naglowek)then return true;end;
local tab=tab_lista[2];
if(not tab)then return false;end;
if(p==i)then return true;end;
local tab_artykul2={};
for k=p+1,i,1 do
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]);
local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1];
artykul=UzyskajArtykul(artykul);
-----
if(k==i)then
if((tab_artykul[artykul])or(tab_artykul2[artykul]))then
return false;
else
return true;
end;
else
tab_artykul2[artykul]=true;
end;
end;
return false;
end;
local function IleNajblizejDalejBezPoziomowo(p)
if(naglowek)then return (p+1);end;
local tab=tab_lista[2];
if(not tab)then return (p+1);end;
local tab_artykul2={};
local i=p+1;
while(true)do
if(not tab[i])then return i;end;
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]);
local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1];
artykul=UzyskajArtykul(artykul);
-----
if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then
return i;
end;
tab_artykul2[artykul]=true;
i=i+1;
end;
return i;
end;
----
local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA)
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0;
local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0;
local staly_dodatek_artykulu=0;
--local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
--local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0;
local poczatek_poprz=nil;
local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni;
local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany;
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local ostatni_artykul_w_rozdziale=nil;
local czy_dwukropek=nil;
local czy_rozdzial_centrowany_temp=nil;
----
local odejmnij_od_dwukropka=0;
local czy_w_trakcie_dwukropkowania=nil;
local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0;
local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu);
local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil;
for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do
if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then
if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then
local rozdzial=nil;
local poziom_artykulu;
if(czy_rozdzial)then
artykul_w_bazie=artykul_w_bazie[1];
rozdzial=artykul_w_bazie[1];
czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4];
poziom_artykulu=artykul_w_bazie[2][1];
if(poziom_artykulu==1)then
local spis=artykul_w_bazie["spis"];
if(spis)then
local nazwa_spisu_temp=spis[1];
local numer_spisu_temp=spis[2];
if((nazwa_spisu_temp)and(numer_spisu_temp))then
return;
end;
end;
end;
else
poziom_artykulu=artykul_w_bazie[2][1];
end;
local czy_dwukropek_aktualnie=nil;
if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then
czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$")
czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek;
end;
local poziom_znakowy_artykulu=poziom_artykulu;
poziom_artykulu=math.abs(poziom_artykulu);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ----
if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil;
if((not czy_rozdzial)and(not w_rozdziale))then
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
end;
local poziom_srednikowego_naglowka_srednik=0;
local czy_artykul_srednik;
local poziom_srednikowego_naglowka_srednik_temp;
if(czy_rozdzial)then
if(poziom_znakowy_artykulu)then
if(poziom_znakowy_artykulu==0)then
poziom_zerowego_naglowka_temp=1;
elseif(poziom_znakowy_artykulu>0)then
poziom_zerowego_naglowka_temp=0;
poziom_srednikowego_naglowka_temp=0;
ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil;
czy_dwukropek=nil;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
end;
end;
end;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
czy_artykul_srednik=true;
end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
ostatni_rozdzial_dodatni_temp=0;
ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp;
end;
local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil;
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
local poziom_artykulu_zerowy;
if(not czy_rozdzial)then
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
poziom_artykulu_zerowy=poziom_artykulu;
----
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz);
----
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu;
end;
if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki;
else
---
if(not czy_rozdzial)then
poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp;
end;
poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0);
-----
if(czy_rozdzial)then
if(poziom_znakowy_artykulu==0)then
if(not czy_dwukropek_aktualnie)then
poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0);
else
poziom_zerowego_naglowka_temp=2;
end;
end;
end;
end;
if(not czy_rozdzial)then
if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
if(w_rozdziale)then
ostatni_rozdzial_dodatni_temp=nil;
ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu;
else
ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu;
end;
end;
poczatek_poprz=poziom_poczatku_artykulu;
poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy);
ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp;
if(not parametry_modul.TypeNil(wynik))then return wynik;end;
local numer_baza=artykul_w_bazie[2][1];
local function __tonumber(liczba)
if(czy_rozdzial)then
if(liczba<0)then
liczba=(liczba and (-liczba) or nil);
return liczba;
end;
else
return liczba;
end;
return nil;
end;
numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil);
end;
end;
end;
end;
local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania)
local ile_w_rozdziale=0;
for s=1,#tab_lista_artykulowa[2],1 do
if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then
local w_rozdziale=tab_lista_artykulowa[2][s][2][4];
if(w_rozdziale)then
ile_w_rozdziale=ile_w_rozdziale+1;
else
break;
end;
end;
end;
return ile_w_rozdziale
end;
local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik)
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
local function UsunElementySpisTresci(tab_numer_temp)
if(not tab_numer_temp)then return;end;
local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd;
for i=#tab_numer_temp,1,-1 do
local tab_naglowka=tab_numer_temp[i];
if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then
tab_numer_prawd=tab_naglowka[1];
HNumerPoziomow_prawd=tab_naglowka[2];
HNumerPoziomowNaglowkow_prawd=tab_naglowka[3]
table.remove(tab_numer_temp,i);
else
break;
end;
end;
if(tab_numer_prawd)then
tab_numer=tab_numer_prawd;
HNumerPoziomow=HNumerPoziomow_prawd;
if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end;
return true;
end;
return nil;
end;
if(znak_poziom>0)then
if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end;
if(#tab_numer_baza_spis_tresci==0)then
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
tab_poziomowo={};
end;
end;
end;
----
-----
tab_poziomowo={};
local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial;
czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or ((not czy_nienilowy_rozdzial)and true or false))
or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or false));
poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0));
local czy_nie_ten_rozdzial;
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
czy_nie_ten_rozdzial=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
else
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka];
end;
end;
if((m==1)and(not czy_nienilowy_rozdzial))then
czy_pierwszy_nilowy=true;
czy_pierwszy_nilowy_rozdzial=true;
end;
if(not czy_nie_ten_rozdzial)then
if(poziomowo)then
prawdziwy_poziom_rozdzialu=poziom_rozdzialu;
poziom_poczatku_rozdzialu=tab_lista[1][2][2];
local numeracja_rozdzialu=tab_lista[1][2][3];
poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu);
czy_rozdzial_centrowany=tab_lista[1][2][4];
----
local czy_z_dwukropkiem=nil;
----
if(poziom_rozdzialu<0)then
poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
numer_poprz=-tab_lista[1][2][1] or 0;
poziom_rozdzialu=-poziom_rozdzialu;
else
numer_poprz=nil;
czy_w_trakcie_dwukropkowania=nil;
odejmnij_od_dwukropka=0;
end;
local czy_sredniki;
-----
poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu;
poziom_znakowy_rozdzialu=poziom_rozdzialu;
poziom_rozdzialu=math.abs(poziom_rozdzialu);
local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo;
if(poziom_znakowy_rozdzialu>0)then
poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0));
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_spisu_tresci_dodatek=0;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
poziom_pierwszego_ujemnego_spisu_tresci=nil;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if((m>2)or(not czy_pierwszy_nilowy))then
poprzedni_tab_poziomowo=nil;
end;
poziom_zerowego_naglowka=0;
poziom_srednikowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1);
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
spis_tresci=true;
pierwszy_rozdzial_dodatni=1;
else
if(not pierwszy_rozdzial_dodatni)then
pierwszy_rozdzial_dodatni=1;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
else
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
end;
end;
if(czy_rozdzial_centrowany)then
ostatni_rozdzial_dodatni=nil;
ostatni_rozdzial_centrowany=poziom_rozdzialu;
else
ostatni_rozdzial_dodatni=poziom_rozdzialu;
end;
elseif(poziom_znakowy_rozdzialu<0)then
czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
----
poziom_srednikowego_naglowka=poziom_rozdzialu;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka;
poziom_rozdzialu=poziom_srednikowego_naglowka;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
else
if(not pierwszy_rowny_rozdzial)then
if((ostatni_poczatek_artykulu)
and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)
and(mw.ustring.match(ostatni_poczatek_artykulu,"^*"))
and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:"))
)then
poziom_rozdzialu=poziom_rozdzialu+1;
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
pierwszy_rowny_rozdzial=1;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
else
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
else
if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then
pierwszy_rowny_rozdzial=0;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then
pierwszy_rowny_rozdzial=1;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then
pierwszy_rowny_rozdzial=nil;
end;
poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0);
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
----
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
----
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0;
if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1);
end;
end;
else
if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka;
czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$");
local dodatek=((czy_z_dwukropkiem)and 1 or 0);
poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1);
poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka;
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-1;
poziom_rozdzialu=1;
else
poziom_zerowego_naglowka=0;
numer_rozdzialu=0;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
staly_dodatek_rozdzialu=0;
end;
end;
if(poziom_znakowy_rozdzialu>0)then
local numer=HNumerPoziomowNaglowkow(poziom_naglowka);
elseif(poziom_znakowy_rozdzialu<0)then
end;
if(poziom_rozdzialu>0)then
if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then
tab_numer[#tab_numer]=nil;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1));
czy_ostatni_rozdzial_jest_centrowany=nil;
elseif(poprzedni_tab_poziomowo)then
local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer);
local len_tab_numer=#tab_numer;
local min_lens=math.min(#poprzedni_tab_poziomowo,lens);
for i=1,min_lens,1 do
tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i];
end;
for i=min_lens+1,#tab_numer do
tab_numer[len_tab_numer+i]=nil;
end;
end;
if(#tab_numer<numer_rozdzialu)then
for i=#tab_numer+1,numer_rozdzialu,1 do
table.insert(tab_numer,1);
end;
elseif(#tab_numer>numer_rozdzialu)then
for i=#tab_numer, numer_rozdzialu+1,-1 do
table.remove(tab_numer,i);
end;
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
else
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
end;
end;
local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()
if(poziom_rozdzialu==0)then return true;end;
if(poziom_znakowy_rozdzialu>0)then
local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true);
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end;
if(poziom_znakowy_naglowka>0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
return true;
end;
end;
end);
elseif(((m==1)
or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1])
and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true)))))
and(poziom_znakowy_rozdzialu<0))then
local czy_artykuly=nil;local tak_wynik=nil;
if(tab_lista[2])then
local czy_w_rozdziale_artykuly=nil;
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
--[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then
return true;
end;]]
if(poziom_artykulu<=poziom_naglowka)then
return true;
end;
else
czy_w_rozdziale_artykuly=true;
end;
end);
tak_wynik=wynik;
end;
if((czy_artykuly)or(m==1))then
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_naglowka<=0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
--if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then
--return false;
--else
return true;
--end;
end;
else
if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end;
return false;
end
end);
if(wynik~=nil)then return wynik;end;
if(tak_wynik~=nil)then return tak_wynik;end;
return true;
else
return true;
end;
else
return true;
end;
end;
local function DodajNaSamPoczatek()
local function ArtykulyNieWRozdziale()
local ile=0;
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local w_rozdziale=artykul_w_bazie[2][4];
if(not w_rozdziale)then
ile=ile+1;
end;
end;
end;
return ile;
end;
if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0)
and((
(poziom_znakowy_rozdzialu>0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_rozdzialu>0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
return false;
end)
)or(
(poziom_znakowy_rozdzialu<0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
end;
return false;
end)
))
)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
table.insert(tab_numer,0);
return true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
return false;
end;
end;
if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
tab_numer={};
elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then
local function Poziom_dodatni_lub_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
elseif(czy_sredniki)then
return true;
end;
return false;
end);
end;
local function czy_inaczej_numeruj_rozdzial_dodatni()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
local function czy_inaczej_numeruj_rozdzial_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end);
end;
if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_1={};end;
table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
------
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,});
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
spis_tresci=false;
-----
tab_numer={};
elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_2={};end;
table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
-----
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,});
spis_tresci=false;
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer={};
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0))
or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0))))
and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(poziom_rozdzialu>0)then
if(poziom_znakowy_rozdzialu>0)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow;
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tab_numer_zapasowe=tab_numer;
tab_numer_3=tab_numer;
tab_numer={};
HNumerPoziomow_3=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
pierwszy_dodatni_naglowek=true;
poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu;
glowny_dodatni_rozdzial=true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
tab_numer_zapasowe=tab_numer;
tab_numer_4=tab_numer;
tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer);
tab_numer[#tab_numer]=nil;
HNumerPoziomow_4=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
if(poprz_poziom_rozdzialu_lub_artykulu)then
numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer);
end;
pierwszy_ujemny_naglowek=true;
poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false;
poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu;
glowny_ujemny_rozdzial=true;
end;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
----
if(wartosc)then
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
end;
-- end;
zbieraj_dane=true;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu;
-----
if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then
if(prawdziwy_poziom_rozdzialu>0)then
pierwszy_dodatni_naglowek=true;
pierwszy_ujemny_naglowek=nil;
else
pierwszy_ujemny_naglowek=true;
pierwszy_dodatni_naglowek=true;
end;
end;
----
czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil));
else
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then
local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local czy_dwukropek_artykulu=nil;
local stare_HNumerArtykulu=nil;
local stare_HNumerPoziomu=nil;
local czy_tytul_rozdzial=nil;
local czy_ma_elementy=nil;
ostatni_poczatek_artykulu=nil;
local czy_zera=nil;
local ile_w_rozdziale=nil;
local poprz_poziom_artykulu_bez_b=nil;
local k=1;
-----
local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
-----
local numer_poprz_w_rozdziale=nil;
local poczatek_poprz=nil;
local id_poprz=nil;
local tab_poprzedni_artykul_w_bazie=nil;
local odejmnij_od_dwukropka_w_rozdziale=0;
-----
local czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
-----
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil;
local czy_w_podreczniku_poprz=nil;
-----
local stare_HNumerPoziomu_poza_rozdzialem=nil;
local ile_w_rozdziale_licznik=1;
local staly_dodatek_rozdzialu_temp=0;
local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu;
local staly_dodatek_artykulu=0;
local ostatni_artykul_w_rozdziale=nil;
local tab_numer_w_rozdziale=nil;
local podrozdzial_spisu=nil;
local dodatek_poprz=nil;
-----
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local Przekierowanie=function(przekierowanie)
return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or ""))));
end;
local czy_w_podreczniku=artykul_w_bazie[5];
local czy_inna_ksiazka;
if(czy_table_baza_artykulu)then
local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]);
if(czy_table_dane)then
czy_inna_ksiazka=artykul_w_bazie[1][4][5];
end;
end;
local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil;
local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil);
---
local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil;
local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
----
artykul=UzyskajArtykul(artykul);
----
if(naglowek or not tab_artykul[artykul])then
pierwszy_rowny_rozdzial=nil;
czy_ma_elementy=true;
if(not naglowek)then
tab_artykul[artykul]=true;
end;
local tab_artykul_w_bazie;
local w_rozdziale;
if(poziomowo)then
local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2];
----
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
w_rozdziale=artykul_w_bazie[2][4];
poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0);
if(w_rozdziale)then
poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale);
numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]);
else
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local numeracja_artykulu=artykul_w_bazie[2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
local czy_rozdzial_z_poczatkiem_jedynki=nil;
if(w_rozdziale)then
if(not stare_HNumerPoziomu_poza_rozdzialem)then
stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer_w_rozdziale=tab_numer;
tab_numer=tab_numer_zapasowe or tab_numer;
end;
local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka()
local czy_artykuly=nil;
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end),czy_artykuly;
end;
local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then
return false;
else
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
if(not ile_w_rozdziale)then
ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false);
end;
if(ile_w_rozdziale_licznik==ile_w_rozdziale)then
czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
odejmnij_od_dwukropka_w_rozdziale=0;
numer_poprz_w_rozdziale=nil;
ostatni_artykul_w_rozdziale=true;
end;
ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1;
if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
czy_w_rozdziale_rejestrowane_osobno_artykuly=true;
elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true;
if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then
local czy_ma_artykuly;
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka();
if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka();
end;
end;
if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then
tab_numer[#tab_numer+1]=0;
end;
end;
else
if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then
-----
tab_poziomowo={};
HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
----
k=1;
tab_poprzedni_artykul_w_bazie=nil;
end;
---
if(not czy_zera)then
if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then
local numer=tab_lista[2][p][2][1];
local poczatek=tab_lista[2][p][2][2];
if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then
for s=p+1,#tab_lista[2],1 do
if(CzyWliczacBezPoziomowo(p,s))then
local numer=tab_lista[2][s][2][1];
local poczatek=tab_lista[2][s][2][2];
local numeracja_artykulu=tab_lista[2][s][2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then
if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then
table.insert(tab_numer,0);
end;
tab_poziomowo={};
czy_zera=true;
break;
elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then
break;
end;
end;
end;
end;
end;
else
local numer=tonumber(tab_lista[2][p][2][1]);
local poczatek=tab_lista[2][p][2][2];
local id=tab_lista[2][p][4];
local function DodajUsunNumerek(jedno,drugie,trzecie)
if((not jedno)and(not drugie)and(not trzecie))then return;end;
if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then
czy_zera=false;
tab_poziomowo={};
table.remove(tab_numer,#tab_numer);
if(#tab_numer>0)then
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1;
end;
czy_rozdzial_z_poczatkiem_jedynki=true;
end;
end;
DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0)));
end;
if((not czy_zera)
and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1])
and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0)))
or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)))
))then
local czy_sa_jakies_artykuly_niezerowe=false;local ile=0;
local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu;
if(poziom_zerowy)then
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>p)then
local poziom_artykulu=artykul_w_bazie[2][1];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if(poziom_artykulu+poziom_numeracji_artykulu>0)then
czy_sa_jakies_artykuly_niezerowe=true;
break;
end;
end;
end;
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>=p)then
ile=ile+1;
end;
end;
end;
if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then
if(ile<=5)then
table.insert(tab_numer,0);
else
nilowanie_poprzedniego_rejestru_tab_poziomowo=true;
end
end;
end;
end;
ostatni_poczatek_artykulu=poziom_poczatku_artykulu;
-----
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz);
----
local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
end;
----
local poziom_czysty_artykulu=poziom_artykulu;
----
local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
----
poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka;
poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu;
----
poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka;
----
poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka;
if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then
ostatni_artykul_w_rozdziale=nil;
end;
----
if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0);
else
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0);
end;
----
local poziom_podany_artykulu_bez_numeracji=poziom_artykulu;
poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0);
----
local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka);
local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu;
if(not w_rozdziale)then
if(k==1)then
staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz;
end;
end;
poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]);
if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end;
----
local prefix_poziom_artykulu=poziom_artykulu;
local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu)
local b=0;
local tab_artykul_w_bazie=mw.text.split(artykul,"/");
if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then
if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then
for c=1,#tab_artykul_w_bazie,1 do
local podstrona_artykul=tab_artykul_w_bazie[c];
local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c];
if(podstrona_artykul==podstrona_poprzedni_artykul)then
b=b+1;
else
break;
end;
end;
end;
else
if(k==1)then
if(#tab_artykul_w_bazie>1)then
local podrozdzial_artykulu=tab_artykul_w_bazie[1];
podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",};
podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu);
if(not podrozdzial_spisu)then
podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",};
podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu);
end;
local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu);
if(czy_z_rozdzialem)then b=1;end;
end;
end
end;
if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end;
if(not poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then
if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then
staly_dodatek_artykulu[1]=b;
staly_dodatek_artykulu[2]=false;
end;
if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then
staly_dodatek_artykulu[3]=nil;
staly_dodatek_artykulu[1]=b;
end;
local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0);
return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie;
elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
if((k==2)and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
-----
local dodatek;
dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu);
poprz_poziom_artykulu_bez_b=poziom_artykulu;
local numer_poziomu=HNumerPoziomow(poziom_artykulu);
-----
if(not w_rozdziale)then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then
tab_poziomowo=tab_numer_4;
tab_numer={};
HNumerPoziomu=HNumerPoziomow_4;
HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0));
else
local numer=numer_rozdzialu-numer_poziomu;
if(numer>=0)then
local tab_numer_s=tab_numer;
local tab_poziomowo_s=tab_poziomowo;
tab_numer={};tab_poziomowo={};
if(#tab_numer_s>=numer_poziomu-1)then
for i=1,numer_poziomu-1,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=numer_poziomu,#tab_numer_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i];
end;
for i=1,#tab_poziomowo_s,1 do
tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i];
end;
else
for i=1,#tab_numer_s,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=1,numer_poziomu-1,1 do
tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i];
end;
for i=numer_poziomu,#tab_poziomowo_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i];
end;
end;
end;
end;
end;
end;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then
if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then
HNumerPoziomu(poziom_artykulu,1);
HNumerArtykulu(poziom_artykulu,1);
end;
end;
local stala=poziom_artykulu;
if(czy_rozdzial_z_poczatkiem_jedynki)then
HNumerPoziomu(stala,1);
HNumerArtykulu(stala,1);
end;
local numer_poziomu=HNumerPoziomu(stala);
poziom_artykulu=stala+dodatek;
local numer=HNumerArtykulu(poziom_artykulu);
local roznica=numer_poziomu-numer;
if(roznica>0)then
numer=HNumerArtykulu(poziom_artykulu,numer_poziomu);
end;
if(#tab_poziomowo<numer)then
for i=#tab_poziomowo+1,numer,1 do
table.insert(tab_poziomowo,1);
end;
else
if(#tab_poziomowo>numer)then
for i=#tab_poziomowo,numer+1,-1 do
table.remove(tab_poziomowo,i);
end;
end;
tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1;
end;
end;
----
tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji;
poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka;
numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil);
poprz_numer_rozdzialu_lub_artykulu=numer_poziomu;
poczatek_poprz=tab_lista[2][p][2][2];
id_poprz=tab_lista[2][p][4];
czy_w_podreczniku_poprz=czy_w_podreczniku;
dodatek_poprz=dodatek;
end;
local wartosc;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if(not poziomowo)then
i=i+1;
else
if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then
HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem;
stare_HNumerPoziomu_poza_rozdzialem=nil;
tab_numer=tab_numer_w_rozdziale;
poprzedni_tab_poziomowo=nil;
-----
poziom_zerowego_artykulu=0;
-----
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then
tab_numer[#tab_numer]=nil;
end;
else
if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then
poprzedni_tab_poziomowo=tab_poziomowo;
else
poprzedni_tab_poziomowo={1,};
end;
end;
end;
k=k+1;
end;
end;
if(not czy_ma_elementy)then
poprzedni_tab_poziomowo=nil;
end;
else
poprzedni_tab_poziomowo=nil;
end;
end;
end;
return;
end;
local function ZamienNumerArtykuluNaTabele(numer_artykulu)
local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true);
return tab_numer_artykulu;
end;
local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)
if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parametry_modul=require("Module:Parametry");
local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki);
if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end;
local tab_w_spis={};
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
if((m>1)and(poziom_rozdzialu==1))then break;end;
local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local czy_artykul=nil;
for _,tab_lub_str in ipairs(tab_inne_spisy)do
local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str);
if(czy_tab_lub_str)then
if(tab_lub_str[1]==artykul)then
czy_artykul=true;
end;
else
if(tab_lub_str==artykul)then
czy_artykul=true;
end;
end;
end;
if(czy_artykul)then
tab_w_spis[artykul]=true;
end;
end;
end;
end;
local czy_w_spis=true;
for _,name in ipairs(tab_inne_spisy)do
local czy_table_name=parametry_modul.TypeTable(name);
czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name];
if(not czy_w_spis)then break;end;
end;
if(not czy_w_spis)then
return tab_numer_artykulu;
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
table.remove(tab_numer_artykulu,1);
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
local nazwa_spisu,numer_spisu;
local czy_jedno=true;local pierwszy_rozdzial;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(m>1)then
if(poziom_rozdzialu==1)then
break;
elseif(m==2)then
pierwszy_rozdzial=poziom_rozdzialu;
elseif(m>2)then
czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu);
end;
end;
end;
if(czy_jedno)then
table.remove(tab_numer_artykulu,1);
end;
end;
return tab_numer_artykulu;
end;
local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end;
local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu);
local lens=#tab_numer_spisu;
for i=lens,1,-1 do
if(i==lens)then
tab_numer_artykulu[1]=tab_numer_spisu[i];
else
table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]);
end;
end;
return tab_numer_artykulu;
end;
p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then
if(s==ktory)then
if(poziomowo)then
local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)
and((#tab_numer>0)and(tab_numer[1]>1)or((#tab_numer==0)and(#tab_poziomowo>0)and(tab_poziomowo[1]>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={};
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=PobierzNumerLubNazweArtykulu({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
else
return i,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
s=s+1;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((not poziomowo)and(i==numer))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
elseif(poziomowo)then
local function NumerArtykulu(tab_numer,tab_poziomowo)
return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
end;
local function WynikArtykulowyZNumeru(numer_artykulu)
if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
end;
end;
local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo);
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and((#tab_numer>0)and(tab_numer[1]>1)or((#tab_numer==0)and(#tab_poziomowo>0)and(tab_poziomowo[1]>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
else
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json)
local tab_dane_ksiazki=nil;
local s=1;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local pierwszy_spis_tresci=nil;
local artykul_spisowy=nil;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)
if((artykul_spisu)and(nazwa_spisu))then
if((artykul_spisu~=nazwa_spisu))then
if(not artykul_spisowy)then return false;else return true;end;
elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then
artykul_spisowy=true;
end;
end;
if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end;
if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end;
local tab_rozdzial=tab_dane_ksiazki[rozdzial];
local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or "";
if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((numer_spisu)and(numer_spisu==1))then
if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
else
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(numer_spisu_tresci)then
local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci);
tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu;
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial];
if(czy_spis_tresci)then
pierwszy_spis_tresci=true;
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
if(not tab_rozdzial[numer_rozdzialu])then
tab_rozdzial[numer_rozdzialu]={};
end;
local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu];
if(not tab_numer_rozdzialu[artykul])then
tab_numer_rozdzialu[artykul]={};
end;
local tab_artykul=tab_numer_rozdzialu[artykul];
local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or "";
if(not tab_artykul[numer_artykulu])then
tab_artykul[numer_artykulu]={};
end;
local tab_numer_artykulu=tab_artykul[numer_artykulu];
local czy_tabelka=parametry_modul.TypeTable(przekierowanie);
----
table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,});
----
s=s+1;
return false;
end;
PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true);
return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki;
end;
return p;
qjxq4alytejtbonsstcv2cfzjr60gyl
551813
551812
2026-08-15T01:49:06Z
Persino
2851
551813
Scribunto
text/plain
local p={};
local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
local args=stronicowyparser_potrzebne_modul:Args(frame);
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]);
----
local dane=tonumber(args["dane"]);
if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end;
----
local artykul_spisu=args["spis"];
artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil;
local tab_artykul=(not naglowek)and {} or nil;
local poziomowo=parametry_modul.CzyTak(args["poziomowo"]);
local tab_poziomowo={};
local tab_poziomowo_1={};
local tab_poziomowo_2={};
local html_modul=require("Module:Html");
----
local function ParametrySzablonuPobierania()
if(not zbieraj_dane_wszystkie)then
local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil;
if(not typ)then
pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł";
else
pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1");
czy_nazwa=parametry_modul.CzyTak(args["nazwa"]);
end;
return function()
return {pierwszy_parametr_szablonu,czy_nazwa,dane,};
end;
end;
end;
local pierwszy_parametr_szablonu=ParametrySzablonuPobierania();
----
local ktory=(tonumber(args["który"]) or 1);
local i=(not poziomowo) and 1 or nil;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu);
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local HNumerPoziomow_4=nil;
local HNumerPoziomow_3=nil
local HNumerPoziomow_2=nil;
local HNumerPoziomow_1=nil;
local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow_1=nil;
local HNumerPoziomowNaglowkow_2=nil;
local tab_numer=poziomowo and {} or nil;
local tab_numer_baza_spis_tresci=nil;
local tab_numer_3=nil
local tab_numer_4=nil;--poziomowo and {} or nil;
local spis=false;
local pierwszy_dodatni_naglowek=nil;
local pierwszy_ujemny_naglowek=nil;
local poprzedni_poziom_znakowy_rozdzialu=nil;
local poprzedni_tab_poziomowo=nil;
local poziom_pierwszego_dodatniego_naglowka=0;
local poziom_pierwszego_ujemnego_naglowka=0;
local poziom_zerowego_naglowka=0;
local poziom_srednikowego_naglowka=0;
local ostatni_rozdzial_dodatni=nil;
local ostatni_rozdzial_centrowany=nil;
local pierwszy_rozdzial_dodatni=nil;
local glowny_dodatni_rozdzial=nil;
local glowny_ujemny_rozdzial=nil;
local spis_tresci=nil;
local poziom_pierwszego_ujemnego_spisu_tresci=nil;
local ostatni_poczatek_artykulu=nil;
local pierwszy_rowny_rozdzial=nil;
local rozdzial;
local czy_pierwszy_nilowy=nil;
local czy_nienilowy_rozdzial=nil;
local czy_pierwszy_nilowy_rozdzial=nil;
local czy_ostatni_rozdzial_jest_centrowany=nil;
local glowny_spis_tresci_lub_rozdzial_ksiazki=nil;
local poprz_poziom_rozdzialu_lub_artykulu=nil;
local poprz_numeracji_rozdzialu_lub_artykulu=nil;
local poprz_numer_rozdzialu_lub_artykulu=nil;
local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil;
local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil;
local staly_dodatek_rozdzialu=0;
----
local poziom_spisu_tresci_dodatek=nil;
----
local odejmnij_od_dwukropka=0;
-----
local czy_w_trakcie_dwukropkowania=nil;
-----
local numer_poprz=nil;
----
local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce;
tab_lista_artykulow_w_ksiazce={};
local function TabLista(tab_lista)
local max_ile=0;
for name,value in pairs(tab_lista)do
max_ile=math.max(max_ile,name);
end;
local function Iterator(tab_lista)
local p2=0;
local s=0;
local pp=0;
local function InneTablica(numer)
local p1=0;
return function()
if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then
p1=p1+1;
pp=pp+1;
return s,tab_lista[numer][p1];
end;
end;
end;
local function WszystkieInneTablica()
local tab={};
for i=1,max_ile-2,1 do
tab[i]=InneTablica(i+2);
end;
return function()
for i=1,max_ile-2,1 do
local wartosc,tab_artykul=tab[i]();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
end;
end;
end;
end;
--local p1=0;
--local p2=0;
--local s=0;
local iter_inne_tablice=WszystkieInneTablica();
return function()
s=s+1;
local wartosc,tab_artykul=iter_inne_tablice();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
elseif((tab_lista[2])and(tab_lista[2][p2+1]))then
p2=p2+1;
pp=pp+1;
return s,tab_lista[2][p2];
else
return nil;
end;
end;
end;
local tab={};
local iter=Iterator(tab_lista);
for s,artykul_w_bazie in iter do
tab[s]=artykul_w_bazie;
end;
return tab;
end;
for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do
if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end;
tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1];
tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista);
end;
----
local function ToNumberPoziomArtykulu(poziom_artykulu)
local numer_artykulu=tonumber(poziom_artykulu);
local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1;
return (numer_artykulu or 0),numer_dodatkowy;
end;
local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz)
if((not w_rozdziale)
and(poziom_zerowego_artykulu>0)
and(poziom_zerowego_naglowka>0))then
if(p>1)then
local czy_jest_nast=tab_lista_2[p-1];
if(czy_jest_nast)then
local numer=tonumber(tab_lista_2[p-1][2][1]);
if(numer>0)then
poziom_zerowego_artykulu=0;
end;
else
poziom_zerowego_artykulu=0;
end;
end;
elseif(poziom_zerowego_artykulu==0)then
poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz;
end;
return poziom_zerowego_artykulu;
end;
local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka)
if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0);
czy_w_trakcie_dwukropkowania=true;
elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=0;
czy_w_trakcie_dwukropkowania=nil;
end;
if(odejmnij_od_dwukropka>0)then
poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka;
if(poziom_artykulu<1)then
poziom_artykulu=1;
end;
end;
return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania;
end;
local function PoziomNumeracji(numeracja_artykulu)
if(numeracja_artykulu)then
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+","");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+",".");
local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false);
local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0);
return poziom_numeracji_artykulu;
end;
return 0;
end;
-----
local function UzyskajArtykul(artykul,pomin_link)
local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link)
or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link);
return artykul;
end;
----
local nazwa_spisu=nil;local numer_spisu=nil;
local prawdziwy_poziom_rozdzialu_poprz=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu;
local poziom_poczatku_rozdzialu=nil;
local poziom_znakowy_rozdzialu=nil;
local prawdziwy_poziom_rozdzialu=nil;
local poziom_naglowka=nil;
local poziom_naglowka_bez_poprawki=nil;
local numer_rozdzialu=nil;
local tab_numer_zapasowe=nil;
local poziom_numeracji_rozdzialu=nil;
local czy_jest_teraz_spis_tresci=nil;
local czy_rozdzial_centrowany=nil;
-----
local zbieraj_dane=true;
-----
czy_nienilowy_rozdzial=tab_lista[1][2][1];
poziom_rozdzialu=czy_nienilowy_rozdzial or 0;
----
rozdzial=tab_lista[1][1];
----
local czy_rozdzial_spisu=false;
if((m==1)and(not numer_spisu)and(not nazwa_spisu))then
if(czy_nienilowy_rozdzial==nil)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
elseif((m>2)and(numer_spisu)and(nazwa_spisu))then
if(poziom_rozdzialu==1)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
end;
-----
local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu)
if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0);
return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu;
elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
end;
local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu)
if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then
return 0;
elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0);
return dodatek;
elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0);
return dodatek;
end;
end;
local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami)
local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu)
return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu)
and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))
and((mw.ustring.match(poziom_poczatku_artykulu,"^:"))
or(mw.ustring.match(poziom_poczatku_artykulu,"^#"))
)
)or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))));
end;
if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then
local roznica=poziom_rozdzialu-poziom_artykulu;
if(roznica>=0)then
staly_poziom_rozdzialu_z_artykulami=roznica+1;
else
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami;
elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then
staly_poziom_rozdzialu_z_artykulami=0;
elseif(#poziom_poczatku_artykulu==0)then
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami;
end;
local function CzyWliczacBezPoziomowo(p,i)
if(naglowek)then return true;end;
local tab=tab_lista[2];
if(not tab)then return false;end;
if(p==i)then return true;end;
local tab_artykul2={};
for k=p+1,i,1 do
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]);
local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1];
artykul=UzyskajArtykul(artykul);
-----
if(k==i)then
if((tab_artykul[artykul])or(tab_artykul2[artykul]))then
return false;
else
return true;
end;
else
tab_artykul2[artykul]=true;
end;
end;
return false;
end;
local function IleNajblizejDalejBezPoziomowo(p)
if(naglowek)then return (p+1);end;
local tab=tab_lista[2];
if(not tab)then return (p+1);end;
local tab_artykul2={};
local i=p+1;
while(true)do
if(not tab[i])then return i;end;
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]);
local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1];
artykul=UzyskajArtykul(artykul);
-----
if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then
return i;
end;
tab_artykul2[artykul]=true;
i=i+1;
end;
return i;
end;
----
local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA)
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0;
local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0;
local staly_dodatek_artykulu=0;
--local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
--local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0;
local poczatek_poprz=nil;
local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni;
local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany;
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local ostatni_artykul_w_rozdziale=nil;
local czy_dwukropek=nil;
local czy_rozdzial_centrowany_temp=nil;
----
local odejmnij_od_dwukropka=0;
local czy_w_trakcie_dwukropkowania=nil;
local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0;
local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu);
local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil;
for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do
if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then
if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then
local rozdzial=nil;
local poziom_artykulu;
if(czy_rozdzial)then
artykul_w_bazie=artykul_w_bazie[1];
rozdzial=artykul_w_bazie[1];
czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4];
poziom_artykulu=artykul_w_bazie[2][1];
if(poziom_artykulu==1)then
local spis=artykul_w_bazie["spis"];
if(spis)then
local nazwa_spisu_temp=spis[1];
local numer_spisu_temp=spis[2];
if((nazwa_spisu_temp)and(numer_spisu_temp))then
return;
end;
end;
end;
else
poziom_artykulu=artykul_w_bazie[2][1];
end;
local czy_dwukropek_aktualnie=nil;
if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then
czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$")
czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek;
end;
local poziom_znakowy_artykulu=poziom_artykulu;
poziom_artykulu=math.abs(poziom_artykulu);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ----
if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil;
if((not czy_rozdzial)and(not w_rozdziale))then
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
end;
local poziom_srednikowego_naglowka_srednik=0;
local czy_artykul_srednik;
local poziom_srednikowego_naglowka_srednik_temp;
if(czy_rozdzial)then
if(poziom_znakowy_artykulu)then
if(poziom_znakowy_artykulu==0)then
poziom_zerowego_naglowka_temp=1;
elseif(poziom_znakowy_artykulu>0)then
poziom_zerowego_naglowka_temp=0;
poziom_srednikowego_naglowka_temp=0;
ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil;
czy_dwukropek=nil;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
end;
end;
end;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
czy_artykul_srednik=true;
end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
ostatni_rozdzial_dodatni_temp=0;
ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp;
end;
local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil;
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
local poziom_artykulu_zerowy;
if(not czy_rozdzial)then
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
poziom_artykulu_zerowy=poziom_artykulu;
----
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz);
----
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu;
end;
if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki;
else
---
if(not czy_rozdzial)then
poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp;
end;
poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0);
-----
if(czy_rozdzial)then
if(poziom_znakowy_artykulu==0)then
if(not czy_dwukropek_aktualnie)then
poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0);
else
poziom_zerowego_naglowka_temp=2;
end;
end;
end;
end;
if(not czy_rozdzial)then
if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
if(w_rozdziale)then
ostatni_rozdzial_dodatni_temp=nil;
ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu;
else
ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu;
end;
end;
poczatek_poprz=poziom_poczatku_artykulu;
poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy);
ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp;
if(not parametry_modul.TypeNil(wynik))then return wynik;end;
local numer_baza=artykul_w_bazie[2][1];
local function __tonumber(liczba)
if(czy_rozdzial)then
if(liczba<0)then
liczba=(liczba and (-liczba) or nil);
return liczba;
end;
else
return liczba;
end;
return nil;
end;
numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil);
end;
end;
end;
end;
local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania)
local ile_w_rozdziale=0;
for s=1,#tab_lista_artykulowa[2],1 do
if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then
local w_rozdziale=tab_lista_artykulowa[2][s][2][4];
if(w_rozdziale)then
ile_w_rozdziale=ile_w_rozdziale+1;
else
break;
end;
end;
end;
return ile_w_rozdziale
end;
local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik)
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
local function UsunElementySpisTresci(tab_numer_temp)
if(not tab_numer_temp)then return;end;
local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd;
for i=#tab_numer_temp,1,-1 do
local tab_naglowka=tab_numer_temp[i];
if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then
tab_numer_prawd=tab_naglowka[1];
HNumerPoziomow_prawd=tab_naglowka[2];
HNumerPoziomowNaglowkow_prawd=tab_naglowka[3]
table.remove(tab_numer_temp,i);
else
break;
end;
end;
if(tab_numer_prawd)then
tab_numer=tab_numer_prawd;
HNumerPoziomow=HNumerPoziomow_prawd;
if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end;
return true;
end;
return nil;
end;
if(znak_poziom>0)then
if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end;
if(#tab_numer_baza_spis_tresci==0)then
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
tab_poziomowo={};
end;
end;
end;
----
-----
tab_poziomowo={};
local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial;
czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or ((not czy_nienilowy_rozdzial)and true or false))
or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or false));
poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0));
local czy_nie_ten_rozdzial;
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
czy_nie_ten_rozdzial=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
else
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka];
end;
end;
if((m==1)and(not czy_nienilowy_rozdzial))then
czy_pierwszy_nilowy=true;
czy_pierwszy_nilowy_rozdzial=true;
end;
if(not czy_nie_ten_rozdzial)then
if(poziomowo)then
prawdziwy_poziom_rozdzialu=poziom_rozdzialu;
poziom_poczatku_rozdzialu=tab_lista[1][2][2];
local numeracja_rozdzialu=tab_lista[1][2][3];
poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu);
czy_rozdzial_centrowany=tab_lista[1][2][4];
----
local czy_z_dwukropkiem=nil;
----
if(poziom_rozdzialu<0)then
poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
numer_poprz=-tab_lista[1][2][1] or 0;
poziom_rozdzialu=-poziom_rozdzialu;
else
numer_poprz=nil;
czy_w_trakcie_dwukropkowania=nil;
odejmnij_od_dwukropka=0;
end;
local czy_sredniki;
-----
poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu;
poziom_znakowy_rozdzialu=poziom_rozdzialu;
poziom_rozdzialu=math.abs(poziom_rozdzialu);
local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo;
if(poziom_znakowy_rozdzialu>0)then
poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0));
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_spisu_tresci_dodatek=0;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
poziom_pierwszego_ujemnego_spisu_tresci=nil;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if((m>2)or(not czy_pierwszy_nilowy))then
poprzedni_tab_poziomowo=nil;
end;
poziom_zerowego_naglowka=0;
poziom_srednikowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1);
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
spis_tresci=true;
pierwszy_rozdzial_dodatni=1;
else
if(not pierwszy_rozdzial_dodatni)then
pierwszy_rozdzial_dodatni=1;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
else
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
end;
end;
if(czy_rozdzial_centrowany)then
ostatni_rozdzial_dodatni=nil;
ostatni_rozdzial_centrowany=poziom_rozdzialu;
else
ostatni_rozdzial_dodatni=poziom_rozdzialu;
end;
elseif(poziom_znakowy_rozdzialu<0)then
czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
----
poziom_srednikowego_naglowka=poziom_rozdzialu;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka;
poziom_rozdzialu=poziom_srednikowego_naglowka;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
else
if(not pierwszy_rowny_rozdzial)then
if((ostatni_poczatek_artykulu)
and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)
and(mw.ustring.match(ostatni_poczatek_artykulu,"^*"))
and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:"))
)then
poziom_rozdzialu=poziom_rozdzialu+1;
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
pierwszy_rowny_rozdzial=1;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
else
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
else
if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then
pierwszy_rowny_rozdzial=0;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then
pierwszy_rowny_rozdzial=1;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then
pierwszy_rowny_rozdzial=nil;
end;
poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0);
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
----
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
----
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0;
if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1);
end;
end;
else
if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka;
czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$");
local dodatek=((czy_z_dwukropkiem)and 1 or 0);
poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1);
poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka;
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-1;
poziom_rozdzialu=1;
else
poziom_zerowego_naglowka=0;
numer_rozdzialu=0;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
staly_dodatek_rozdzialu=0;
end;
end;
if(poziom_znakowy_rozdzialu>0)then
local numer=HNumerPoziomowNaglowkow(poziom_naglowka);
elseif(poziom_znakowy_rozdzialu<0)then
end;
if(poziom_rozdzialu>0)then
if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then
tab_numer[#tab_numer]=nil;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1));
czy_ostatni_rozdzial_jest_centrowany=nil;
elseif(poprzedni_tab_poziomowo)then
local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer);
local len_tab_numer=#tab_numer;
local min_lens=math.min(#poprzedni_tab_poziomowo,lens);
for i=1,min_lens,1 do
tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i];
end;
for i=min_lens+1,#tab_numer do
tab_numer[len_tab_numer+i]=nil;
end;
end;
if(#tab_numer<numer_rozdzialu)then
for i=#tab_numer+1,numer_rozdzialu,1 do
table.insert(tab_numer,1);
end;
elseif(#tab_numer>numer_rozdzialu)then
for i=#tab_numer, numer_rozdzialu+1,-1 do
table.remove(tab_numer,i);
end;
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
else
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
end;
end;
local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()
if(poziom_rozdzialu==0)then return true;end;
if(poziom_znakowy_rozdzialu>0)then
local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true);
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end;
if(poziom_znakowy_naglowka>0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
return true;
end;
end;
end);
elseif(((m==1)
or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1])
and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true)))))
and(poziom_znakowy_rozdzialu<0))then
local czy_artykuly=nil;local tak_wynik=nil;
if(tab_lista[2])then
local czy_w_rozdziale_artykuly=nil;
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
--[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then
return true;
end;]]
if(poziom_artykulu<=poziom_naglowka)then
return true;
end;
else
czy_w_rozdziale_artykuly=true;
end;
end);
tak_wynik=wynik;
end;
if((czy_artykuly)or(m==1))then
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_naglowka<=0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
--if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then
--return false;
--else
return true;
--end;
end;
else
if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end;
return false;
end
end);
if(wynik~=nil)then return wynik;end;
if(tak_wynik~=nil)then return tak_wynik;end;
return true;
else
return true;
end;
else
return true;
end;
end;
local function DodajNaSamPoczatek()
local function ArtykulyNieWRozdziale()
local ile=0;
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local w_rozdziale=artykul_w_bazie[2][4];
if(not w_rozdziale)then
ile=ile+1;
end;
end;
end;
return ile;
end;
if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0)
and((
(poziom_znakowy_rozdzialu>0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_rozdzialu>0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
return false;
end)
)or(
(poziom_znakowy_rozdzialu<0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
end;
return false;
end)
))
)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
table.insert(tab_numer,0);
return true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
return false;
end;
end;
if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
tab_numer={};
elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then
local function Poziom_dodatni_lub_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
elseif(czy_sredniki)then
return true;
end;
return false;
end);
end;
local function czy_inaczej_numeruj_rozdzial_dodatni()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
local function czy_inaczej_numeruj_rozdzial_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end);
end;
if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_1={};end;
table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
------
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,});
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
spis_tresci=false;
-----
tab_numer={};
elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_2={};end;
table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
-----
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,});
spis_tresci=false;
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer={};
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0))
or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0))))
and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(poziom_rozdzialu>0)then
if(poziom_znakowy_rozdzialu>0)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow;
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tab_numer_zapasowe=tab_numer;
tab_numer_3=tab_numer;
tab_numer={};
HNumerPoziomow_3=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
pierwszy_dodatni_naglowek=true;
poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu;
glowny_dodatni_rozdzial=true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
tab_numer_zapasowe=tab_numer;
tab_numer_4=tab_numer;
tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer);
tab_numer[#tab_numer]=nil;
HNumerPoziomow_4=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
if(poprz_poziom_rozdzialu_lub_artykulu)then
numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer);
end;
pierwszy_ujemny_naglowek=true;
poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false;
poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu;
glowny_ujemny_rozdzial=true;
end;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
----
if(wartosc)then
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
end;
-- end;
zbieraj_dane=true;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu;
-----
if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then
if(prawdziwy_poziom_rozdzialu>0)then
pierwszy_dodatni_naglowek=true;
pierwszy_ujemny_naglowek=nil;
else
pierwszy_ujemny_naglowek=true;
pierwszy_dodatni_naglowek=true;
end;
end;
----
czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil));
else
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then
local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local czy_dwukropek_artykulu=nil;
local stare_HNumerArtykulu=nil;
local stare_HNumerPoziomu=nil;
local czy_tytul_rozdzial=nil;
local czy_ma_elementy=nil;
ostatni_poczatek_artykulu=nil;
local czy_zera=nil;
local ile_w_rozdziale=nil;
local poprz_poziom_artykulu_bez_b=nil;
local k=1;
-----
local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
-----
local numer_poprz_w_rozdziale=nil;
local poczatek_poprz=nil;
local id_poprz=nil;
local tab_poprzedni_artykul_w_bazie=nil;
local odejmnij_od_dwukropka_w_rozdziale=0;
-----
local czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
-----
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil;
local czy_w_podreczniku_poprz=nil;
-----
local stare_HNumerPoziomu_poza_rozdzialem=nil;
local ile_w_rozdziale_licznik=1;
local staly_dodatek_rozdzialu_temp=0;
local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu;
local staly_dodatek_artykulu=0;
local ostatni_artykul_w_rozdziale=nil;
local tab_numer_w_rozdziale=nil;
local podrozdzial_spisu=nil;
local dodatek_poprz=nil;
-----
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local Przekierowanie=function(przekierowanie)
return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or ""))));
end;
local czy_w_podreczniku=artykul_w_bazie[5];
local czy_inna_ksiazka;
if(czy_table_baza_artykulu)then
local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]);
if(czy_table_dane)then
czy_inna_ksiazka=artykul_w_bazie[1][4][5];
end;
end;
local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil;
local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil);
---
local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil;
local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
----
artykul=UzyskajArtykul(artykul);
----
if(naglowek or not tab_artykul[artykul])then
pierwszy_rowny_rozdzial=nil;
czy_ma_elementy=true;
if(not naglowek)then
tab_artykul[artykul]=true;
end;
local tab_artykul_w_bazie;
local w_rozdziale;
if(poziomowo)then
local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2];
----
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
w_rozdziale=artykul_w_bazie[2][4];
poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0);
if(w_rozdziale)then
poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale);
numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]);
else
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local numeracja_artykulu=artykul_w_bazie[2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
local czy_rozdzial_z_poczatkiem_jedynki=nil;
if(w_rozdziale)then
if(not stare_HNumerPoziomu_poza_rozdzialem)then
stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer_w_rozdziale=tab_numer;
tab_numer=tab_numer_zapasowe or tab_numer;
end;
local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka()
local czy_artykuly=nil;
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end),czy_artykuly;
end;
local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then
return false;
else
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
if(not ile_w_rozdziale)then
ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false);
end;
if(ile_w_rozdziale_licznik==ile_w_rozdziale)then
czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
odejmnij_od_dwukropka_w_rozdziale=0;
numer_poprz_w_rozdziale=nil;
ostatni_artykul_w_rozdziale=true;
end;
ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1;
if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
czy_w_rozdziale_rejestrowane_osobno_artykuly=true;
elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true;
if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then
local czy_ma_artykuly;
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka();
if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka();
end;
end;
if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then
tab_numer[#tab_numer+1]=0;
end;
end;
else
if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then
-----
tab_poziomowo={};
HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
----
k=1;
tab_poprzedni_artykul_w_bazie=nil;
end;
---
if(not czy_zera)then
if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then
local numer=tab_lista[2][p][2][1];
local poczatek=tab_lista[2][p][2][2];
if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then
for s=p+1,#tab_lista[2],1 do
if(CzyWliczacBezPoziomowo(p,s))then
local numer=tab_lista[2][s][2][1];
local poczatek=tab_lista[2][s][2][2];
local numeracja_artykulu=tab_lista[2][s][2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then
if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then
table.insert(tab_numer,0);
end;
tab_poziomowo={};
czy_zera=true;
break;
elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then
break;
end;
end;
end;
end;
end;
else
local numer=tonumber(tab_lista[2][p][2][1]);
local poczatek=tab_lista[2][p][2][2];
local id=tab_lista[2][p][4];
local function DodajUsunNumerek(jedno,drugie,trzecie)
if((not jedno)and(not drugie)and(not trzecie))then return;end;
if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then
czy_zera=false;
tab_poziomowo={};
table.remove(tab_numer,#tab_numer);
if(#tab_numer>0)then
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1;
end;
czy_rozdzial_z_poczatkiem_jedynki=true;
end;
end;
DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0)));
end;
if((not czy_zera)
and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1])
and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0)))
or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)))
))then
local czy_sa_jakies_artykuly_niezerowe=false;local ile=0;
local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu;
if(poziom_zerowy)then
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>p)then
local poziom_artykulu=artykul_w_bazie[2][1];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if(poziom_artykulu+poziom_numeracji_artykulu>0)then
czy_sa_jakies_artykuly_niezerowe=true;
break;
end;
end;
end;
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>=p)then
ile=ile+1;
end;
end;
end;
if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then
if(ile<=5)then
table.insert(tab_numer,0);
else
nilowanie_poprzedniego_rejestru_tab_poziomowo=true;
end
end;
end;
end;
ostatni_poczatek_artykulu=poziom_poczatku_artykulu;
-----
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz);
----
local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
end;
----
local poziom_czysty_artykulu=poziom_artykulu;
----
local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
----
poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka;
poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu;
----
poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka;
----
poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka;
if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then
ostatni_artykul_w_rozdziale=nil;
end;
----
if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0);
else
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0);
end;
----
local poziom_podany_artykulu_bez_numeracji=poziom_artykulu;
poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0);
----
local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka);
local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu;
if(not w_rozdziale)then
if(k==1)then
staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz;
end;
end;
poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]);
if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end;
----
local prefix_poziom_artykulu=poziom_artykulu;
local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu)
local b=0;
local tab_artykul_w_bazie=mw.text.split(artykul,"/");
if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then
if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then
for c=1,#tab_artykul_w_bazie,1 do
local podstrona_artykul=tab_artykul_w_bazie[c];
local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c];
if(podstrona_artykul==podstrona_poprzedni_artykul)then
b=b+1;
else
break;
end;
end;
end;
else
if(k==1)then
if(#tab_artykul_w_bazie>1)then
local podrozdzial_artykulu=tab_artykul_w_bazie[1];
podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",};
podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu);
if(not podrozdzial_spisu)then
podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",};
podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu);
end;
local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu);
if(czy_z_rozdzialem)then b=1;end;
end;
end
end;
if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end;
if(not poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then
if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then
staly_dodatek_artykulu[1]=b;
staly_dodatek_artykulu[2]=false;
end;
if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then
staly_dodatek_artykulu[3]=nil;
staly_dodatek_artykulu[1]=b;
end;
local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0);
return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie;
elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
if((k==2)and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
-----
local dodatek;
dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu);
poprz_poziom_artykulu_bez_b=poziom_artykulu;
local numer_poziomu=HNumerPoziomow(poziom_artykulu);
-----
if(not w_rozdziale)then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then
tab_poziomowo=tab_numer_4;
tab_numer={};
HNumerPoziomu=HNumerPoziomow_4;
HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0));
else
local numer=numer_rozdzialu-numer_poziomu;
if(numer>=0)then
local tab_numer_s=tab_numer;
local tab_poziomowo_s=tab_poziomowo;
tab_numer={};tab_poziomowo={};
if(#tab_numer_s>=numer_poziomu-1)then
for i=1,numer_poziomu-1,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=numer_poziomu,#tab_numer_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i];
end;
for i=1,#tab_poziomowo_s,1 do
tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i];
end;
else
for i=1,#tab_numer_s,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=1,numer_poziomu-1,1 do
tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i];
end;
for i=numer_poziomu,#tab_poziomowo_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i];
end;
end;
end;
end;
end;
end;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then
if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then
HNumerPoziomu(poziom_artykulu,1);
HNumerArtykulu(poziom_artykulu,1);
end;
end;
local stala=poziom_artykulu;
if(czy_rozdzial_z_poczatkiem_jedynki)then
HNumerPoziomu(stala,1);
HNumerArtykulu(stala,1);
end;
local numer_poziomu=HNumerPoziomu(stala);
poziom_artykulu=stala+dodatek;
local numer=HNumerArtykulu(poziom_artykulu);
local roznica=numer_poziomu-numer;
if(roznica>0)then
numer=HNumerArtykulu(poziom_artykulu,numer_poziomu);
end;
if(#tab_poziomowo<numer)then
for i=#tab_poziomowo+1,numer,1 do
table.insert(tab_poziomowo,1);
end;
else
if(#tab_poziomowo>numer)then
for i=#tab_poziomowo,numer+1,-1 do
table.remove(tab_poziomowo,i);
end;
end;
tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1;
end;
end;
----
tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji;
poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka;
numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil);
poprz_numer_rozdzialu_lub_artykulu=numer_poziomu;
poczatek_poprz=tab_lista[2][p][2][2];
id_poprz=tab_lista[2][p][4];
czy_w_podreczniku_poprz=czy_w_podreczniku;
dodatek_poprz=dodatek;
end;
local wartosc;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if(not poziomowo)then
i=i+1;
else
if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then
HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem;
stare_HNumerPoziomu_poza_rozdzialem=nil;
tab_numer=tab_numer_w_rozdziale;
poprzedni_tab_poziomowo=nil;
-----
poziom_zerowego_artykulu=0;
-----
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then
tab_numer[#tab_numer]=nil;
end;
else
if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then
poprzedni_tab_poziomowo=tab_poziomowo;
else
poprzedni_tab_poziomowo={1,};
end;
end;
end;
k=k+1;
end;
end;
if(not czy_ma_elementy)then
poprzedni_tab_poziomowo=nil;
end;
else
poprzedni_tab_poziomowo=nil;
end;
end;
end;
return;
end;
local function ZamienNumerArtykuluNaTabele(numer_artykulu)
local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true);
return tab_numer_artykulu;
end;
local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)
if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parametry_modul=require("Module:Parametry");
local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki);
if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end;
local tab_w_spis={};
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
if((m>1)and(poziom_rozdzialu==1))then break;end;
local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local czy_artykul=nil;
for _,tab_lub_str in ipairs(tab_inne_spisy)do
local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str);
if(czy_tab_lub_str)then
if(tab_lub_str[1]==artykul)then
czy_artykul=true;
end;
else
if(tab_lub_str==artykul)then
czy_artykul=true;
end;
end;
end;
if(czy_artykul)then
tab_w_spis[artykul]=true;
end;
end;
end;
end;
local czy_w_spis=true;
for _,name in ipairs(tab_inne_spisy)do
local czy_table_name=parametry_modul.TypeTable(name);
czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name];
if(not czy_w_spis)then break;end;
end;
if(not czy_w_spis)then
return tab_numer_artykulu;
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
table.remove(tab_numer_artykulu,1);
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
local nazwa_spisu,numer_spisu;
local czy_jedno=true;local pierwszy_rozdzial;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(m>1)then
if(poziom_rozdzialu==1)then
break;
elseif(m==2)then
pierwszy_rozdzial=poziom_rozdzialu;
elseif(m>2)then
czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu);
end;
end;
end;
if(czy_jedno)then
table.remove(tab_numer_artykulu,1);
end;
end;
return tab_numer_artykulu;
end;
local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end;
local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu);
local lens=#tab_numer_spisu;
for i=lens,1,-1 do
if(i==lens)then
tab_numer_artykulu[1]=tab_numer_spisu[i];
else
table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]);
end;
end;
return tab_numer_artykulu;
end;
p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then
if(s==ktory)then
if(poziomowo)then
local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)
and(((#tab_numer>0)and((tonumber(tab_numer[1]) or 1)>1))or((#tab_numer==0)and(#tab_poziomowo>0)and((tonumber(tab_poziomowo[1]) or 1)>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={};
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
else
return i,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
s=s+1;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((not poziomowo)and(i==numer))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
elseif(poziomowo)then
local function NumerArtykulu(tab_numer,tab_poziomowo)
return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
end;
local function WynikArtykulowyZNumeru(numer_artykulu)
if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
end;
end;
local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo);
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and(((#tab_numer>0)and((tonumber(tab_numer[1]) or 1)>1))or((#tab_numer==0)and(#tab_poziomowo>0)and((tonumber(tab_poziomowo[1]) or 1)>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
else
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json)
local tab_dane_ksiazki=nil;
local s=1;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local pierwszy_spis_tresci=nil;
local artykul_spisowy=nil;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)
if((artykul_spisu)and(nazwa_spisu))then
if((artykul_spisu~=nazwa_spisu))then
if(not artykul_spisowy)then return false;else return true;end;
elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then
artykul_spisowy=true;
end;
end;
if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end;
if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end;
local tab_rozdzial=tab_dane_ksiazki[rozdzial];
local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or "";
if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((numer_spisu)and(numer_spisu==1))then
if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
else
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(numer_spisu_tresci)then
local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci);
tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu;
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial];
if(czy_spis_tresci)then
pierwszy_spis_tresci=true;
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
if(not tab_rozdzial[numer_rozdzialu])then
tab_rozdzial[numer_rozdzialu]={};
end;
local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu];
if(not tab_numer_rozdzialu[artykul])then
tab_numer_rozdzialu[artykul]={};
end;
local tab_artykul=tab_numer_rozdzialu[artykul];
local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or "";
if(not tab_artykul[numer_artykulu])then
tab_artykul[numer_artykulu]={};
end;
local tab_numer_artykulu=tab_artykul[numer_artykulu];
local czy_tabelka=parametry_modul.TypeTable(przekierowanie);
----
table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,});
----
s=s+1;
return false;
end;
PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true);
return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki;
end;
return p;
3yt28ut3jfi4q1sjxzob2vzyjf51erb
551815
551813
2026-08-15T02:24:38Z
Persino
2851
551815
Scribunto
text/plain
local p={};
local function PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,typ,zbieraj_dane_wszystkie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
stronicowyparser_potrzebne_modul:AnalizujArgumentySzablonu(frame);
stronicowyparser_potrzebne_modul:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce=stronicowyparser_potrzebne_modul:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce)then return "(błąd)";end;
local args=stronicowyparser_potrzebne_modul:Args(frame);
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local nie_wszystkie=parametry_modul.CzyTak(args["nie wszystkie"]);
----
local dane=tonumber(args["dane"]);
if((not dane)or((dane~=1)and(dane~=2)and(dane~=3)))then dane=1;end;
----
local artykul_spisu=args["spis"];
artykul_spisu=artykul_spisu and parametry_modul["Odstępy"]{[1]=artykul_spisu,[2]="tak",} or nil;
local tab_artykul=(not naglowek)and {} or nil;
local poziomowo=parametry_modul.CzyTak(args["poziomowo"]);
local tab_poziomowo={};
local tab_poziomowo_1={};
local tab_poziomowo_2={};
local html_modul=require("Module:Html");
----
local function ParametrySzablonuPobierania()
if(not zbieraj_dane_wszystkie)then
local pierwszy_parametr_szablonu=nil;local czy_nazwa=nil;
if(not typ)then
pierwszy_parametr_szablonu=args[1] and ((not naglowek) and mw.ustring.gsub(html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true),"^([^#]*)#(.*)$","%1") or html_modul["PoprawAdresNagłówkaOrazParametrówStronyAdresu"](html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](args[1]),true)) or "Przykładowy artykuł";
else
pierwszy_parametr_szablonu=args[1] and ((not poziomowo) and (tonumber(args[1]) or 1) or args[1]) or ((not poziomowo) and 1 or "1");
czy_nazwa=parametry_modul.CzyTak(args["nazwa"]);
end;
return function()
return {pierwszy_parametr_szablonu,czy_nazwa,dane,};
end;
end;
end;
local pierwszy_parametr_szablonu=ParametrySzablonuPobierania();
----
local ktory=(tonumber(args["który"]) or 1);
local i=(not poziomowo) and 1 or nil;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu);
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local HNumerPoziomow_4=nil;
local HNumerPoziomow_3=nil
local HNumerPoziomow_2=nil;
local HNumerPoziomow_1=nil;
local HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomowNaglowkow_1=nil;
local HNumerPoziomowNaglowkow_2=nil;
local tab_numer=poziomowo and {} or nil;
local tab_numer_baza_spis_tresci=nil;
local tab_numer_3=nil
local tab_numer_4=nil;--poziomowo and {} or nil;
local spis=false;
local pierwszy_dodatni_naglowek=nil;
local pierwszy_ujemny_naglowek=nil;
local poprzedni_poziom_znakowy_rozdzialu=nil;
local poprzedni_tab_poziomowo=nil;
local poziom_pierwszego_dodatniego_naglowka=0;
local poziom_pierwszego_ujemnego_naglowka=0;
local poziom_zerowego_naglowka=0;
local poziom_srednikowego_naglowka=0;
local ostatni_rozdzial_dodatni=nil;
local ostatni_rozdzial_centrowany=nil;
local pierwszy_rozdzial_dodatni=nil;
local glowny_dodatni_rozdzial=nil;
local glowny_ujemny_rozdzial=nil;
local spis_tresci=nil;
local poziom_pierwszego_ujemnego_spisu_tresci=nil;
local ostatni_poczatek_artykulu=nil;
local pierwszy_rowny_rozdzial=nil;
local rozdzial;
local czy_pierwszy_nilowy=nil;
local czy_nienilowy_rozdzial=nil;
local czy_pierwszy_nilowy_rozdzial=nil;
local czy_ostatni_rozdzial_jest_centrowany=nil;
local glowny_spis_tresci_lub_rozdzial_ksiazki=nil;
local poprz_poziom_rozdzialu_lub_artykulu=nil;
local poprz_numeracji_rozdzialu_lub_artykulu=nil;
local poprz_numer_rozdzialu_lub_artykulu=nil;
local poprz_czysty_poziom_rozdzialu_lub_artykulu=nil;
local poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=nil;
local staly_dodatek_rozdzialu=0;
----
local poziom_spisu_tresci_dodatek=nil;
----
local odejmnij_od_dwukropka=0;
-----
local czy_w_trakcie_dwukropkowania=nil;
-----
local numer_poprz=nil;
----
local tab_lista_artykulow_w_ksiazce2=tab_lista_artykulow_w_ksiazce;
tab_lista_artykulow_w_ksiazce={};
local function TabLista(tab_lista)
local max_ile=0;
for name,value in pairs(tab_lista)do
max_ile=math.max(max_ile,name);
end;
local function Iterator(tab_lista)
local p2=0;
local s=0;
local pp=0;
local function InneTablica(numer)
local p1=0;
return function()
if((tab_lista[numer])and(tab_lista[numer][p1+1])and(tab_lista[numer][p1+1][6]==pp))then
p1=p1+1;
pp=pp+1;
return s,tab_lista[numer][p1];
end;
end;
end;
local function WszystkieInneTablica()
local tab={};
for i=1,max_ile-2,1 do
tab[i]=InneTablica(i+2);
end;
return function()
for i=1,max_ile-2,1 do
local wartosc,tab_artykul=tab[i]();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
end;
end;
end;
end;
--local p1=0;
--local p2=0;
--local s=0;
local iter_inne_tablice=WszystkieInneTablica();
return function()
s=s+1;
local wartosc,tab_artykul=iter_inne_tablice();
if((wartosc)and(tab_artykul))then
return wartosc,tab_artykul;
elseif((tab_lista[2])and(tab_lista[2][p2+1]))then
p2=p2+1;
pp=pp+1;
return s,tab_lista[2][p2];
else
return nil;
end;
end;
end;
local tab={};
local iter=Iterator(tab_lista);
for s,artykul_w_bazie in iter do
tab[s]=artykul_w_bazie;
end;
return tab;
end;
for s,tab_lista in ipairs( tab_lista_artykulow_w_ksiazce2)do
if(not tab_lista_artykulow_w_ksiazce[s])then tab_lista_artykulow_w_ksiazce[s]={};end;
tab_lista_artykulow_w_ksiazce[s][1]=tab_lista[1];
tab_lista_artykulow_w_ksiazce[s][2]=TabLista(tab_lista);
end;
----
local function ToNumberPoziomArtykulu(poziom_artykulu)
local numer_artykulu=tonumber(poziom_artykulu);
local numer_dodatkowy=((numer_artykulu)and(numer_artykulu>0)) and 0 or 1;
return (numer_artykulu or 0),numer_dodatkowy;
end;
local function ZerowyArtykul(tab_lista_2,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz)
if((not w_rozdziale)
and(poziom_zerowego_artykulu>0)
and(poziom_zerowego_naglowka>0))then
if(p>1)then
local czy_jest_nast=tab_lista_2[p-1];
if(czy_jest_nast)then
local numer=tonumber(tab_lista_2[p-1][2][1]);
if(numer>0)then
poziom_zerowego_artykulu=0;
end;
else
poziom_zerowego_artykulu=0;
end;
end;
elseif(poziom_zerowego_artykulu==0)then
poziom_zerowego_artykulu=poziom_zerowego_artykulu_poprz;
end;
return poziom_zerowego_artykulu;
end;
local function OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka)
if((not czy_w_trakcie_dwukropkowania)and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=math.max((#poziom_poczatku_artykulu-(numer_poprz or 0)-1),0);
czy_w_trakcie_dwukropkowania=true;
elseif((czy_w_trakcie_dwukropkowania)and(not mw.ustring.match(poziom_poczatku_artykulu,"^:")))then
odejmnij_od_dwukropka=0;
czy_w_trakcie_dwukropkowania=nil;
end;
if(odejmnij_od_dwukropka>0)then
poziom_artykulu=poziom_artykulu-odejmnij_od_dwukropka;
if(poziom_artykulu<1)then
poziom_artykulu=1;
end;
end;
return poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania;
end;
local function PoziomNumeracji(numeracja_artykulu)
if(numeracja_artykulu)then
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"^%s*%.*(.-)%.*%s*$","%1");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%s+","");
numeracja_artykulu=mw.ustring.gsub(numeracja_artykulu,"%.+",".");
local tab_numeracja_artykulu=numeracja_artykulu and mw.text.split(numeracja_artykulu,"%s*%.%s*",false);
local poziom_numeracji_artykulu=((numeracja_artykulu~="") and (#tab_numeracja_artykulu) or 0);
return poziom_numeracji_artykulu;
end;
return 0;
end;
-----
local function UzyskajArtykul(artykul,pomin_link)
local artykul=(not naglowek)and stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul,pomin_link)
or stronicowyparser_potrzebne_modul.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(artykul,true,pomin_link);
return artykul;
end;
----
local nazwa_spisu=nil;local numer_spisu=nil;
local prawdziwy_poziom_rozdzialu_poprz=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu;
local poziom_poczatku_rozdzialu=nil;
local poziom_znakowy_rozdzialu=nil;
local prawdziwy_poziom_rozdzialu=nil;
local poziom_naglowka=nil;
local poziom_naglowka_bez_poprawki=nil;
local numer_rozdzialu=nil;
local tab_numer_zapasowe=nil;
local poziom_numeracji_rozdzialu=nil;
local czy_jest_teraz_spis_tresci=nil;
local czy_rozdzial_centrowany=nil;
-----
local zbieraj_dane=true;
-----
czy_nienilowy_rozdzial=tab_lista[1][2][1];
poziom_rozdzialu=czy_nienilowy_rozdzial or 0;
----
rozdzial=tab_lista[1][1];
mw.log(poziom_rozdzialu,rozdzial)
----
local czy_rozdzial_spisu=false;
if((m==1)and(not numer_spisu)and(not nazwa_spisu))then
if(czy_nienilowy_rozdzial==nil)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
elseif((m>2)and(numer_spisu)and(nazwa_spisu))then
if(poziom_rozdzialu==1)then
local spis=tab_lista[1]["spis"];
if(spis)then
nazwa_spisu=spis[1];
numer_spisu=spis[2];
czy_rozdzial_spisu=true;
pierwszy_dodatni_naglowek=false;
pierwszy_ujemny_naglowek=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
end;
end;
-----
local function PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu)
if(not poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
if(poziom_naglowka==poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local poziom_numeracji=poziom_numeracji_rozdzialu-(staly_dodatek_rozdzialu[1] or 0);
return poziom_naglowka+((poziom_numeracji>=0)and poziom_numeracji or 0),staly_dodatek_rozdzialu;
elseif(poziom_naglowka~=poprz_czysty_poziom_rozdzialu_lub_artykulu)then
staly_dodatek_rozdzialu={poziom_numeracji_rozdzialu,};
return poziom_naglowka,staly_dodatek_rozdzialu;
end;
end;
local function PoziomNumerNaglowkaStalyDodatekRozdzialu(staly_dodatek_rozdzialu,poziom_naglowka,poprz_czysty_poziom_rozdzialu_lub_artykulu)
if(parametry_modul.TypeTable(staly_dodatek_rozdzialu))then
return 0;
elseif(poziom_naglowka>poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[2] or 0);
return dodatek;
elseif(poziom_naglowka<poprz_czysty_poziom_rozdzialu_lub_artykulu)then
local dodatek=(parametry_modul.TypeTable(staly_dodatek_rozdzialu) and staly_dodatek_rozdzialu[1] or 0);
return dodatek;
end;
end;
local function PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,poziom_rozdzialu,poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami)
local function JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu)
return ((poziom_poczatku_artykulu)and(poziom_poczatku_rozdzialu)
and(((mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))
and((mw.ustring.match(poziom_poczatku_artykulu,"^:"))
or(mw.ustring.match(poziom_poczatku_artykulu,"^#"))
)
)or((mw.ustring.match(poziom_poczatku_rozdzialu,"^#"))and(mw.ustring.match(poziom_poczatku_artykulu,"^:")))));
end;
if(JedenDwa(poziom_poczatku_rozdzialu,poziom_poczatku_artykulu))then
local roznica=poziom_rozdzialu-poziom_artykulu;
if(roznica>=0)then
staly_poziom_rozdzialu_z_artykulami=roznica+1;
else
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+staly_poziom_rozdzialu_z_artykulami),staly_poziom_rozdzialu_z_artykulami;
elseif(JedenDwa(poziom_poczatku_artykulu,poziom_poczatku_rozdzialu))then
staly_poziom_rozdzialu_z_artykulami=0;
elseif(#poziom_poczatku_artykulu==0)then
staly_poziom_rozdzialu_z_artykulami=0;
end;
return (poziom_artykulu+(staly_poziom_rozdzialu_z_artykulami or 0)),staly_poziom_rozdzialu_z_artykulami;
end;
local function CzyWliczacBezPoziomowo(p,i)
if(naglowek)then return true;end;
local tab=tab_lista[2];
if(not tab)then return false;end;
if(p==i)then return true;end;
local tab_artykul2={};
for k=p+1,i,1 do
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[k][1]);
local artykul=czy_table_baza_artykulu and tab[k][1][1] or tab[k][1];
artykul=UzyskajArtykul(artykul);
-----
if(k==i)then
if((tab_artykul[artykul])or(tab_artykul2[artykul]))then
return false;
else
return true;
end;
else
tab_artykul2[artykul]=true;
end;
end;
return false;
end;
local function IleNajblizejDalejBezPoziomowo(p)
if(naglowek)then return (p+1);end;
local tab=tab_lista[2];
if(not tab)then return (p+1);end;
local tab_artykul2={};
local i=p+1;
while(true)do
if(not tab[i])then return i;end;
-----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab[i][1]);
local artykul=czy_table_baza_artykulu and tab[i][1][1] or tab[i][1];
artykul=UzyskajArtykul(artykul);
-----
if((not tab_artykul[artykul])and(not tab_artykul2[artykul]))then
return i;
end;
tab_artykul2[artykul]=true;
i=i+1;
end;
return i;
end;
----
local function AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulowa,czy_rozdzial,__FUNKCJA)
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka or 0;
local poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka or 0;
local staly_dodatek_artykulu=0;
--local poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
--local poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
local staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu or 0;
local poczatek_poprz=nil;
local ostatni_rozdzial_dodatni_temp=ostatni_rozdzial_dodatni;
local ostatni_rozdzial_centrowany_temp=ostatni_rozdzial_centrowany;
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local ostatni_artykul_w_rozdziale=nil;
local czy_dwukropek=nil;
local czy_rozdzial_centrowany_temp=nil;
----
local odejmnij_od_dwukropka=0;
local czy_w_trakcie_dwukropkowania=nil;
local poziom_znakowy_rozdzialu=tab_lista[1][2][1] or 0;
local poziom_rozdzialu=math.abs(poziom_znakowy_rozdzialu);
local numer_poprz=(poziom_znakowy_rozdzialu<0)and poziom_rozdzialu or nil;
for p,artykul_w_bazie in ipairs(tab_lista_artykulowa)do
if((czy_rozdzial and (p>m)) or (not czy_rozdzial))then
if((not czy_rozdzial) and (CzyWliczacBezPoziomowo(1,p)) or czy_rozdzial)then
local rozdzial=nil;
local poziom_artykulu;
if(czy_rozdzial)then
artykul_w_bazie=artykul_w_bazie[1];
rozdzial=artykul_w_bazie[1];
czy_rozdzial_centrowany_temp=artykul_w_bazie[2][4];
poziom_artykulu=artykul_w_bazie[2][1];
if(poziom_artykulu==1)then
local spis=artykul_w_bazie["spis"];
if(spis)then
local nazwa_spisu_temp=spis[1];
local numer_spisu_temp=spis[2];
if((nazwa_spisu_temp)and(numer_spisu_temp))then
return;
end;
end;
end;
else
poziom_artykulu=artykul_w_bazie[2][1];
end;
local czy_dwukropek_aktualnie=nil;
if((czy_rozdzial)and(rozdzial)and(poziom_artykulu)and(poziom_artykulu==0))then
czy_dwukropek_aktualnie=mw.ustring.match(rozdzial,":%s*$")
czy_dwukropek=czy_dwukropek_aktualnie or czy_dwukropek;
end;
local poziom_znakowy_artykulu=poziom_artykulu;
poziom_artykulu=math.abs(poziom_artykulu);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2]; ----
if((not czy_rozdzial)or((czy_rozdzial)and(poziom_znakowy_artykulu<0)))then
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local w_rozdziale=(not czy_rozdzial) and artykul_w_bazie[2][4] or nil;
if((not czy_rozdzial)and(not w_rozdziale))then
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
local __poziom_poczatku_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
end;
local poziom_srednikowego_naglowka_srednik=0;
local czy_artykul_srednik;
local poziom_srednikowego_naglowka_srednik_temp;
if(czy_rozdzial)then
if(poziom_znakowy_artykulu)then
if(poziom_znakowy_artykulu==0)then
poziom_zerowego_naglowka_temp=1;
elseif(poziom_znakowy_artykulu>0)then
poziom_zerowego_naglowka_temp=0;
poziom_srednikowego_naglowka_temp=0;
ostatni_rozdzial_dodatni_temp=(not czy_rozdzial_centrowany_temp) and ostatni_rozdzial_dodatni_temp or nil;
czy_dwukropek=nil;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
end;
end;
end;
else
poziom_srednikowego_naglowka_srednik_temp=mw.ustring.match(poziom_poczatku_artykulu,"^;+.*$");
if(poziom_srednikowego_naglowka_srednik_temp)then
poziom_srednikowego_naglowka_srednik=#poziom_srednikowego_naglowka_srednik_temp;
poziom_srednikowego_naglowka_temp=poziom_srednikowego_naglowka_srednik;
czy_artykul_srednik=true;
end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
ostatni_rozdzial_dodatni_temp=0;
ostatni_rozdzial_centrowany_temp=w_rozdziale and 0 or ostatni_rozdzial_centrowany_temp;
end;
local id=(not czy_rozdzial)and artykul_w_bazie[4] or nil;
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
local poziom_artykulu_zerowy;
if(not czy_rozdzial)then
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
poziom_artykulu_zerowy=poziom_artykulu;
----
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista_artykulowa,p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka_temp,poziom_zerowego_artykulu_poprz);
----
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu;
end;
if((not czy_rozdzial)and(poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_artykulu+poziom_naglowka_bez_poprawki;
else
---
if(not czy_rozdzial)then
poziom_zerowego_naglowka_temp=((not w_rozdziale)and(ostatni_artykul_w_rozdziale)and(poziom_zerowego_naglowka_temp>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka_temp-1) or poziom_zerowego_naglowka_temp;
end;
poziom_artykulu=(((czy_rozdzial)and(--[[((ostatni_rozdzial_centrowany_temp or 0)>0)or]](poziom_znakowy_artykulu<=0))or(not czy_rozdzial))and ((ostatni_rozdzial_centrowany_temp or 0)+(ostatni_rozdzial_dodatni_temp or 0)+(poziom_zerowego_naglowka_temp+(((poziom_znakowy_artykulu)and(poziom_znakowy_artykulu==0)and(czy_dwukropek)and(not czy_dwukropek_aktualnie))and 1 or 0)+poziom_srednikowego_naglowka_temp)) or 0)+(((czy_rozdzial)and(poziom_znakowy_artykulu>0)and(not czy_rozdzial_centrowany_temp))and ostatni_rozdzial_centrowany_temp or 0)+((not poziom_srednikowego_naglowka_srednik_temp)and poziom_artykulu or 0)--[[+staly_dodatek_rozdzialu_temp]]+(id and 1 or 0);
-----
if(czy_rozdzial)then
if(poziom_znakowy_artykulu==0)then
if(not czy_dwukropek_aktualnie)then
poziom_zerowego_naglowka_temp=1+(czy_dwukropek and 1 or 0);
else
poziom_zerowego_naglowka_temp=2;
end;
end;
end;
end;
if(not czy_rozdzial)then
if(w_rozdziale)then ostatni_artykul_w_rozdziale=true else ostatni_artykul_w_rozdziale=false;end;
end;
if((czy_rozdzial)and(poziom_znakowy_artykulu>0))then
if(w_rozdziale)then
ostatni_rozdzial_dodatni_temp=nil;
ostatni_rozdzial_centrowany_temp=poziom_znakowy_artykulu;
else
ostatni_rozdzial_dodatni_temp=poziom_znakowy_artykulu;
end;
end;
poczatek_poprz=poziom_poczatku_artykulu;
poziom_artykulu=poziom_artykulu+((czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
local wynik=__FUNKCJA(poziom_artykulu,poziom_naglowka_bez_poprawki,poziom_znakowy_artykulu,w_rozdziale,ostatni_rozdzial_centrowany_temp,{poziom_srednikowego_naglowka_temp,poziom_srednikowego_naglowka_srednik,},poziom_zerowego_naglowka_temp,poziom_artykulu_zerowy);
ostatni_rozdzial_dodatni_temp=(czy_rozdzial_centrowany_temp) and poziom_artykulu or ostatni_rozdzial_dodatni_temp;
if(not parametry_modul.TypeNil(wynik))then return wynik;end;
local numer_baza=artykul_w_bazie[2][1];
local function __tonumber(liczba)
if(czy_rozdzial)then
if(liczba<0)then
liczba=(liczba and (-liczba) or nil);
return liczba;
end;
else
return liczba;
end;
return nil;
end;
numer_poprz=(not w_rozdziale)and __tonumber(numer_baza) or ((w_rozdziale)and numer_poprz or nil);
end;
end;
end;
end;
local function IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulowa,bez_sprawdzania)
local ile_w_rozdziale=0;
for s=1,#tab_lista_artykulowa[2],1 do
if(bez_sprawdzania or CzyWliczacBezPoziomowo(1,s))then
local w_rozdziale=tab_lista_artykulowa[2][s][2][4];
if(w_rozdziale)then
ile_w_rozdziale=ile_w_rozdziale+1;
else
break;
end;
end;
end;
return ile_w_rozdziale
end;
local function KoniecSpisuTresci(poziom_naglowka_bez_poprawki,znak_poziom,czy_srednik)
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
local function UsunElementySpisTresci(tab_numer_temp)
if(not tab_numer_temp)then return;end;
local tab_numer_prawd;local HNumerPoziomow_prawd;local HNumerPoziomowNaglowkow_prawd;
for i=#tab_numer_temp,1,-1 do
local tab_naglowka=tab_numer_temp[i];
if((tab_naglowka[4]>=poziom_naglowka_bez_poprawki)or((tab_naglowka[5]<0)and((znak_poziom>0)or(czy_srednik))))then
tab_numer_prawd=tab_naglowka[1];
HNumerPoziomow_prawd=tab_naglowka[2];
HNumerPoziomowNaglowkow_prawd=tab_naglowka[3]
table.remove(tab_numer_temp,i);
else
break;
end;
end;
if(tab_numer_prawd)then
tab_numer=tab_numer_prawd;
HNumerPoziomow=HNumerPoziomow_prawd;
if(HNumerPoziomowNaglowkow_prawd)then HNumerPoziomowNaglowkow=HNumerPoziomowNaglowkow_prawd;end;
return true;
end;
return nil;
end;
if(znak_poziom>0)then
if(not UsunElementySpisTresci(tab_numer_baza_spis_tresci))then return;end;
if(#tab_numer_baza_spis_tresci==0)then
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
end;
tab_poziomowo={};
end;
end;
end;
----
-----
tab_poziomowo={};
local rozdzial_bez_dwukropka=mw.ustring.match(rozdzial,"^%s*(.-)%s*:[%s:]*$") or rozdzial;
czy_jest_teraz_spis_tresci=((m==1)and (czy_nienilowy_rozdzial and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or ((not czy_nienilowy_rozdzial)and true or false))
or ((m>1)and tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial_bez_dwukropka]
or false));
poziom_spisu_tresci_dodatek=(czy_jest_teraz_spis_tresci and ((poziom_rozdzialu==0)and 1 or 0) or (poziom_spisu_tresci_dodatek or 0));
local czy_nie_ten_rozdzial;
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0))then
czy_nie_ten_rozdzial=false;
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
else
glowny_spis_tresci_lub_rozdzial_ksiazki=false;
if((not czy_jest_teraz_spis_tresci)and(nie_wszystkie))then
czy_nie_ten_rozdzial=tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu[rozdzial_bez_dwukropka];
end;
end;
if((m==1)and(not czy_nienilowy_rozdzial))then
czy_pierwszy_nilowy=true;
czy_pierwszy_nilowy_rozdzial=true;
end;
if(not czy_nie_ten_rozdzial)then
if(poziomowo)then
prawdziwy_poziom_rozdzialu=poziom_rozdzialu;
poziom_poczatku_rozdzialu=tab_lista[1][2][2];
local numeracja_rozdzialu=tab_lista[1][2][3];
poziom_numeracji_rozdzialu=PoziomNumeracji(numeracja_rozdzialu);
czy_rozdzial_centrowany=tab_lista[1][2][4];
----
local czy_z_dwukropkiem=nil;
----
if(poziom_rozdzialu<0)then
poziom_rozdzialu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(-poziom_rozdzialu,poziom_poczatku_rozdzialu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
numer_poprz=-tab_lista[1][2][1] or 0;
poziom_rozdzialu=-poziom_rozdzialu;
else
numer_poprz=nil;
czy_w_trakcie_dwukropkowania=nil;
odejmnij_od_dwukropka=0;
end;
local czy_sredniki;
-----
poprzedni_poziom_znakowy_rozdzialu=poziom_znakowy_rozdzialu;
poziom_znakowy_rozdzialu=poziom_rozdzialu;
poziom_rozdzialu=math.abs(poziom_rozdzialu);
local poprzedni_tab_poziomowo_temp=poprzedni_tab_poziomowo;
if(poziom_znakowy_rozdzialu>0)then
poziom_naglowka=poziom_rozdzialu+(czy_rozdzial_centrowany and 0 or (ostatni_rozdzial_centrowany or 0));
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_spisu_tresci_dodatek=0;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
poziom_pierwszego_ujemnego_spisu_tresci=nil;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if((m>2)or(not czy_pierwszy_nilowy))then
poprzedni_tab_poziomowo=nil;
end;
poziom_zerowego_naglowka=0;
poziom_srednikowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,1);
if((tab_numer_baza_spis_tresci)and(#tab_numer_baza_spis_tresci>0)and(not spis_tresci))then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
spis_tresci=true;
pierwszy_rozdzial_dodatni=1;
else
if(not pierwszy_rozdzial_dodatni)then
pierwszy_rozdzial_dodatni=1;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,1);
else
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
end;
end;
if(czy_rozdzial_centrowany)then
ostatni_rozdzial_dodatni=nil;
ostatni_rozdzial_centrowany=poziom_rozdzialu;
else
ostatni_rozdzial_dodatni=poziom_rozdzialu;
end;
elseif(poziom_znakowy_rozdzialu<0)then
czy_sredniki=mw.ustring.match(poziom_poczatku_rozdzialu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
----
ostatni_poczatek_artykulu=nil;
pierwszy_rowny_rozdzial=nil;
----
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
----
if((poprz_ujemnego_rozdzialu_dodatniego_rozdzialu)and(poprz_ujemnego_rozdzialu_dodatniego_rozdzialu>0))then
pierwszy_ujemny_naglowek=nil;
end;
end;
----
poziom_srednikowego_naglowka=poziom_rozdzialu;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0) + (ostatni_rozdzial_dodatni or 0) + poziom_zerowego_naglowka + poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-poziom_srednikowego_naglowka;
poziom_rozdzialu=poziom_srednikowego_naglowka;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
else
if(not pierwszy_rowny_rozdzial)then
if((ostatni_poczatek_artykulu)
and(#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)
and(mw.ustring.match(ostatni_poczatek_artykulu,"^*"))
and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:"))
)then
poziom_rozdzialu=poziom_rozdzialu+1;
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
pierwszy_rowny_rozdzial=1;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
else
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
else
if((not ostatni_poczatek_artykulu)or((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^*"))))then
pierwszy_rowny_rozdzial=0;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^:")))then
pierwszy_rowny_rozdzial=1;
elseif((#ostatni_poczatek_artykulu==#poziom_poczatku_rozdzialu)and(mw.ustring.match(poziom_poczatku_rozdzialu,"^#")))then
pierwszy_rowny_rozdzial=nil;
end;
poziom_rozdzialu=poziom_rozdzialu+(pierwszy_rowny_rozdzial or 0);
poziom_znakowy_rozdzialu=-poziom_rozdzialu;
poziom_naglowka=poziom_rozdzialu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka+((not czy_jest_teraz_spis_tresci) and poziom_spisu_tresci_dodatek or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
end;
----
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
----
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
local numer_rozdzialu_dodatniego=HNumerPoziomowNaglowkow(0) or 0;
if(numer_rozdzialu_dodatniego>=numer_rozdzialu)then
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,numer_rozdzialu_dodatniego+1);
end;
end;
else
if((m>1)or((m==1)and(not czy_pierwszy_nilowy)))then
local poziom_zerowego_naglowka_temp=poziom_zerowego_naglowka;
czy_z_dwukropkiem=mw.ustring.match(rozdzial,":%s*$");
local dodatek=((czy_z_dwukropkiem)and 1 or 0);
poziom_zerowego_naglowka=1+((not czy_z_dwukropkiem)and ((poziom_zerowego_naglowka_temp==2) and 1 or 0) or 1);
poziom_naglowka=1+(((not czy_z_dwukropkiem)and(poziom_zerowego_naglowka_temp==2))and 1 or 0)+ (ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0) + 0+poziom_srednikowego_naglowka;
poziom_naglowka_bez_poprawki=poziom_naglowka;
poziom_naglowka,staly_dodatek_rozdzialu=PoziomNumerNaglowka(poziom_naglowka,poziom_numeracji_rozdzialu,poprz_poziom_rozdzialu_lub_artykulu,poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu);
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1);
numer_rozdzialu=HNumerPoziomow(poziom_naglowka);
poziom_znakowy_rozdzialu=-1;
poziom_rozdzialu=1;
else
poziom_zerowego_naglowka=0;
numer_rozdzialu=0;
poziom_naglowka=(ostatni_rozdzial_centrowany or 0);
poziom_naglowka_bez_poprawki=poziom_naglowka;
staly_dodatek_rozdzialu=0;
end;
end;
if(poziom_znakowy_rozdzialu>0)then
local numer=HNumerPoziomowNaglowkow(poziom_naglowka);
elseif(poziom_znakowy_rozdzialu<0)then
end;
if(poziom_rozdzialu>0)then
if(((czy_ostatni_rozdzial_jest_centrowany)and(ostatni_rozdzial_centrowany or 0)>0)and(#tab_numer>0)and(tab_numer[#tab_numer]==0)and(#tab_numer<=numer_rozdzialu))then
tab_numer[#tab_numer]=nil;
numer_rozdzialu=HNumerPoziomow(poziom_naglowka,((numer_rozdzialu>1)and(numer_rozdzialu-1) or 1));
czy_ostatni_rozdzial_jest_centrowany=nil;
elseif(poprzedni_tab_poziomowo)then
local lens=math.min(#poprzedni_tab_poziomowo,numer_rozdzialu-#tab_numer);
local len_tab_numer=#tab_numer;
local min_lens=math.min(#poprzedni_tab_poziomowo,lens);
for i=1,min_lens,1 do
tab_numer[len_tab_numer+i]=poprzedni_tab_poziomowo[i];
end;
for i=min_lens+1,#tab_numer do
tab_numer[len_tab_numer+i]=nil;
end;
end;
if(#tab_numer<numer_rozdzialu)then
for i=#tab_numer+1,numer_rozdzialu,1 do
table.insert(tab_numer,1);
end;
elseif(#tab_numer>numer_rozdzialu)then
for i=#tab_numer, numer_rozdzialu+1,-1 do
table.remove(tab_numer,i);
end;
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
else
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0) + 1;
end;
end;
local function CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()
if(poziom_rozdzialu==0)then return true;end;
if(poziom_znakowy_rozdzialu>0)then
local ile_w_rozdziale_w_naglowku_artykulow=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,true);
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(ile_w_rozdziale_w_naglowku_artykulow>0)then return true;end;
if(poziom_znakowy_naglowka>0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
return true;
end;
end;
end);
elseif(((m==1)
or(((m==2)and(czy_pierwszy_nilowy_rozdzial))or((tab_lista_artykulow_w_ksiazce[m-1])
and((tab_lista_artykulow_w_ksiazce[m-1][1][2][1] or 0)>0)and(tab_lista_artykulow_w_ksiazce[m-1][2])and(#tab_lista_artykulow_w_ksiazce[m-1][2]==IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista_artykulow_w_ksiazce[m-1],true)))))
and(poziom_znakowy_rozdzialu<0))then
local czy_artykuly=nil;local tak_wynik=nil;
if(tab_lista[2])then
local czy_w_rozdziale_artykuly=nil;
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,_,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
--[[if(((((not czy_z_dwukropkiem)and(czy_w_rozdziale_artykuly))or(poziom_artykulu-(poziom_zerowego_naglowka or 0)<=poziom_naglowka)or(poziom_artykulu-(poziom_srednikowego_naglowka[1] or 0)<=poziom_naglowka))and(poziom_artykulu_zerowy)and(poziom_artykulu_zerowy==0)and(poziom_zerowego_naglowka)and(poziom_zerowego_naglowka>0))and((m>2)or((m==2)and(not czy_pierwszy_nilowy_rozdzial))))then
return true;
end;]]
if(poziom_artykulu<=poziom_naglowka)then
return true;
end;
else
czy_w_rozdziale_artykuly=true;
end;
end);
tak_wynik=wynik;
end;
if((czy_artykuly)or(m==1))then
local wynik=AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_aktualnego_naglowka,poziom_naglowka,poziom_znakowy_naglowka,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_naglowka<=0)then
if(poziom_aktualnego_naglowka<=poziom_naglowka)then
--if((poziom_srednikowego_naglowka[2])and(poziom_srednikowego_naglowka[2]>0))then
--return false;
--else
return true;
--end;
end;
else
if((m==1)and(poziom_znakowy_rozdzialu<0)and(poziom_znakowy_naglowka>0))then return true;end;
return false;
end
end);
if(wynik~=nil)then return wynik;end;
if(tak_wynik~=nil)then return tak_wynik;end;
return true;
else
return true;
end;
else
return true;
end;
end;
local function DodajNaSamPoczatek()
local function ArtykulyNieWRozdziale()
local ile=0;
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local w_rozdziale=artykul_w_bazie[2][4];
if(not w_rozdziale)then
ile=ile+1;
end;
end;
end;
return ile;
end;
if((tab_lista_artykulow_w_ksiazce[m+1])and(ArtykulyNieWRozdziale()>0)
and((
(poziom_znakowy_rozdzialu>0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_znakowy_rozdzialu>0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
return false;
end)
)or(
(poziom_znakowy_rozdzialu<0)
and AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka_temp,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_srednikowego_naglowka_temp[2])and(poziom_srednikowego_naglowka)and(poziom_srednikowego_naglowka_temp[2]>poziom_srednikowego_naglowka))then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end;
end;
return false;
end)
))
)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
table.insert(tab_numer,0);
return true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
return false;
end;
end;
if((m==1)and(czy_pierwszy_nilowy)and(poziom_znakowy_rozdzialu==0))then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
tab_numer={};
elseif((czy_jest_teraz_spis_tresci)and((poziom_znakowy_rozdzialu>0)or(poziom_znakowy_rozdzialu<0)))then
local function Poziom_dodatni_lub_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
elseif(czy_sredniki)then
return true;
end;
return false;
end);
end;
local function czy_inaczej_numeruj_rozdzial_dodatni()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
local function czy_inaczej_numeruj_rozdzial_ujemny()
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],nil,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
end);
end;
if((poziom_znakowy_rozdzialu>0)and((czy_inaczej_numeruj_rozdzial_dodatni())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_1={};end;
table.insert(tab_poziomowo_1,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
------
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,HNumerPoziomowNaglowkow,poziom_naglowka_bez_poprawki,1,});
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
spis_tresci=false;
-----
tab_numer={};
elseif((poziom_znakowy_rozdzialu<0)and((czy_inaczej_numeruj_rozdzial_ujemny())or(Poziom_dodatni_lub_ujemny())))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
if(not tab_poziomowo_1)then tab_poziomowo_2={};end;
table.insert(tab_poziomowo_2,{tab_poziomowo,poziom_naglowka_bez_poprawki,});
----
tab_poziomowo={};
tab_numer_zapasowe=tab_numer;
-----
if(not tab_numer_baza_spis_tresci)then tab_numer_baza_spis_tresci={};end;
table.insert(tab_numer_baza_spis_tresci,{tab_numer,HNumerPoziomow,nil,poziom_naglowka_bez_poprawki,-1,});
spis_tresci=false;
-----
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer={};
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif(((not czy_jest_teraz_spis_tresci)and(not czy_rozdzial_spisu)and(((not pierwszy_dodatni_naglowek)and(poziom_znakowy_rozdzialu>0))
or(((not pierwszy_ujemny_naglowek)or((prawdziwy_poziom_rozdzialu_poprz)and(prawdziwy_poziom_rozdzialu_poprz>0)))and(poziom_znakowy_rozdzialu<0))))
and(not CzyJestONumerzeMniejszymLubRownymPoziomieNizAktualnyRozdzial()))and((not czy_pierwszy_nilowy_rozdzial)or((#tab_numer~=1)or(tab_numer[1]==1)))then
glowny_spis_tresci_lub_rozdzial_ksiazki=true;
if(poziom_rozdzialu>0)then
if(poziom_znakowy_rozdzialu>0)then
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
HNumerPoziomowNaglowkow_2=HNumerPoziomowNaglowkow;
HNumerPoziomowNaglowkow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
tab_numer_zapasowe=tab_numer;
tab_numer_3=tab_numer;
tab_numer={};
HNumerPoziomow_3=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
pierwszy_dodatni_naglowek=true;
poziom_pierwszego_dodatniego_naglowka=poziom_rozdzialu;
glowny_dodatni_rozdzial=true;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
----
tab_numer_zapasowe=tab_numer;
tab_numer_4=tab_numer;
tab_numer=parametry_modul["KopiujTabelęElementów"](tab_numer);
tab_numer[#tab_numer]=nil;
HNumerPoziomow_4=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
if(poprz_poziom_rozdzialu_lub_artykulu)then
numer_rozdzialu=HNumerPoziomow(poprz_poziom_rozdzialu_lub_artykulu,#tab_numer);
end;
pierwszy_ujemny_naglowek=true;
poprz_ujemnego_rozdzialu_dodatniego_rozdzialu=(m>1) and prawdziwy_poziom_rozdzialu_poprz or false;
poziom_pierwszego_ujemnego_naglowka=poziom_rozdzialu;
glowny_ujemny_rozdzial=true;
end;
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=DodajNaSamPoczatek();
if((not parametry_modul.TypeBoolean(wartosc))and(wartosc))then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
----
if(wartosc)then
else
if(zbieraj_dane)then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
zbieraj_dane=false;
end;
end;
end;
-- end;
zbieraj_dane=true;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_rozdzialu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_naglowka;
poprz_numer_rozdzialu_lub_artykulu=numer_rozdzialu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_naglowka_bez_poprawki;
prawdziwy_poziom_rozdzialu_poprz=prawdziwy_poziom_rozdzialu;
-----
if(((not czy_rozdzial_spisu))and((m>1)or((m==1)and(not czy_pierwszy_nilowy_rozdzial))))then
if(prawdziwy_poziom_rozdzialu>0)then
pierwszy_dodatni_naglowek=true;
pierwszy_ujemny_naglowek=nil;
else
pierwszy_ujemny_naglowek=true;
pierwszy_dodatni_naglowek=true;
end;
end;
----
czy_ostatni_rozdzial_jest_centrowany=((poziom_znakowy_rozdzialu>0)and(czy_rozdzial_centrowany and true or nil) or ((poziom_znakowy_rozdzialu<=0)and czy_ostatni_rozdzial_jest_centrowany or nil));
else
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,"",tab_numer,{},czy_nienilowy_rozdzial,nil,nil,nil,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if((tab_lista[2])and(parametry_modul["CzySąElementyNumerowaneTablicy"](tab_lista[2])))then
local HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local czy_dwukropek_artykulu=nil;
local stare_HNumerArtykulu=nil;
local stare_HNumerPoziomu=nil;
local czy_tytul_rozdzial=nil;
local czy_ma_elementy=nil;
ostatni_poczatek_artykulu=nil;
local czy_zera=nil;
local ile_w_rozdziale=nil;
local poprz_poziom_artykulu_bez_b=nil;
local k=1;
-----
local czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
local artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
local czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
-----
local numer_poprz_w_rozdziale=nil;
local poczatek_poprz=nil;
local id_poprz=nil;
local tab_poprzedni_artykul_w_bazie=nil;
local odejmnij_od_dwukropka_w_rozdziale=0;
-----
local czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
-----
local poziom_zerowego_artykulu=0;
local staly_poziom_rozdzialu_z_artykulami=0;
local nilowanie_poprzedniego_rejestru_tab_poziomowo=nil;
local czy_w_podreczniku_poprz=nil;
-----
local stare_HNumerPoziomu_poza_rozdzialem=nil;
local ile_w_rozdziale_licznik=1;
local staly_dodatek_rozdzialu_temp=0;
local staly_dodatek_rozdzialu_roz=staly_dodatek_rozdzialu;
local staly_dodatek_artykulu=0;
local ostatni_artykul_w_rozdziale=nil;
local tab_numer_w_rozdziale=nil;
local podrozdzial_spisu=nil;
local dodatek_poprz=nil;
-----
for p,artykul_w_bazie in ipairs(tab_lista[2])do
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local Przekierowanie=function(przekierowanie)
return (((parametry_modul.TypeString(przekierowanie))and(przekierowanie))or(parametry_modul.TypeTable(przekierowanie)and(((przekierowanie[1])and((przekierowanie[2])or(przekierowanie[3])))or(przekierowanie[1]))and(przekierowanie[1]..(przekierowanie[2] and ("?"..(przekierowanie[2] or "")) or "")..(przekierowanie[3] and ("#"..(przekierowanie[3] or "")) or ""))));
end;
local czy_w_podreczniku=artykul_w_bazie[5];
local czy_inna_ksiazka;
if(czy_table_baza_artykulu)then
local czy_table_dane=parametry_modul.TypeTable(artykul_w_bazie[1][4]);
if(czy_table_dane)then
czy_inna_ksiazka=artykul_w_bazie[1][4][5];
end;
end;
local czy_url=czy_table_baza_artykulu and artykul_w_bazie[1][9] or nil;
local przekierowanie=(czy_w_podreczniku) and (czy_table_baza_artykulu and ((not artykul_w_bazie[1][4])and(not artykul_w_bazie[1][7]) and Przekierowanie(artykul_w_bazie[1][3]) or {Przekierowanie(artykul_w_bazie[1][3]),artykul_w_bazie[1][4],nil,nil,artykul_w_bazie[1][7],}) or nil) or (((not czy_w_podreczniku)and(czy_table_baza_artykulu)and(artykul_w_bazie[1][5])or(artykul_w_bazie[1][6])or(artykul_w_bazie[1][7])) and {nil,nil,artykul_w_bazie[1][5],artykul_w_bazie[1][6],artykul_w_bazie[1][7],} or nil);
---
local czy_dodane_lub_kolega=czy_table_baza_artykulu and artykul_w_bazie[1][8] or nil;
local czy_dodane=parametry_modul.TypeBoolean(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
local ile_dodano=parametry_modul.TypeNumber(czy_dodane_lub_kolega) and czy_dodane_lub_kolega or nil;
----
artykul=UzyskajArtykul(artykul);
----
if(naglowek or not tab_artykul[artykul])then
pierwszy_rowny_rozdzial=nil;
czy_ma_elementy=true;
if(not naglowek)then
tab_artykul[artykul]=true;
end;
local tab_artykul_w_bazie;
local w_rozdziale;
if(poziomowo)then
local poziom_artykulu=artykul_w_bazie[2][1]+(ile_dodano or 0);
local poziom_poczatku_artykulu=artykul_w_bazie[2][2];
----
local czy_poczatek_rozdzialu=(IleNajblizejDalejBezPoziomowo(p-1)>IleNajblizejDalejBezPoziomowo(0));
w_rozdziale=artykul_w_bazie[2][4];
poziom_artykulu=poziom_artykulu+(w_rozdziale and 1 or 0)+((((ile_dodano)and(ile_dodano>0))and(w_rozdziale))and 1 or 0);
if(w_rozdziale)then
poziom_artykulu,odejmnij_od_dwukropka_w_rozdziale,czy_w_trakcie_dwukropkowania_w_rozdziale=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz_w_rozdziale or 0,czy_w_trakcie_dwukropkowania_w_rozdziale,odejmnij_od_dwukropka_w_rozdziale);
numer_poprz_w_rozdziale=tonumber(tab_lista[2][p][2][1]);
else
poziom_artykulu,odejmnij_od_dwukropka,czy_w_trakcie_dwukropkowania=OdejmnijOdDwukropka(poziom_artykulu,poziom_poczatku_artykulu,numer_poprz or 0,czy_w_trakcie_dwukropkowania,odejmnij_od_dwukropka);
end;
----
local numeracja_artykulu=artykul_w_bazie[2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
local czy_rozdzial_z_poczatkiem_jedynki=nil;
if(w_rozdziale)then
if(not stare_HNumerPoziomu_poza_rozdzialem)then
stare_HNumerPoziomu_poza_rozdzialem=HNumerPoziomow;
HNumerPoziomow=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
tab_numer_w_rozdziale=tab_numer;
tab_numer=tab_numer_zapasowe or tab_numer;
end;
local function CzyRozdzialMaArtykulyNieWewnetrzNaglowka()
local czy_artykuly=nil;
return AnalizaArtykulowaLubRozdzialowa(tab_lista[2],false,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if(not w_rozdziale)then
czy_artykuly=true;
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end),czy_artykuly;
end;
local function CzyRozdzialMaRozdzialyNieWewnetrzNaglowka()
return AnalizaArtykulowaLubRozdzialowa(tab_lista_artykulow_w_ksiazce,true,function(poziom_artykulu,poziom_naglowka,poziom_znakowy_rozdzialu_artykulu,w_rozdziale,ostatni_rozdzial_centrowany,poziom_srednikowego_naglowka,poziom_zerowego_naglowka,poziom_artykulu_zerowy)
if((poziom_znakowy_rozdzialu<0)and(poziom_znakowy_rozdzialu_artykulu>0))then
return false;
else
if(poziom_artykulu>poziom_naglowka)then
return true;
end;
return false;
end;
end);
end;
if(not ile_w_rozdziale)then
ile_w_rozdziale=IleArtykolowWRozdzialeWewnatrzNaglowka(tab_lista,false);
end;
if(ile_w_rozdziale_licznik==ile_w_rozdziale)then
czy_w_trakcie_dwukropkowania_w_rozdziale=nil;
odejmnij_od_dwukropka_w_rozdziale=0;
numer_poprz_w_rozdziale=nil;
ostatni_artykul_w_rozdziale=true;
end;
ile_w_rozdziale_licznik=ile_w_rozdziale_licznik+1;
if((poziom_znakowy_rozdzialu>0)and(ile_w_rozdziale==1))then
local wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,{},nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
czy_w_rozdziale_rejestrowane_osobno_artykuly=true;
elseif(not artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)then
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=true;
if(parametry_modul.TypeNil(czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka))then
local czy_ma_artykuly;
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka,czy_ma_artykuly=CzyRozdzialMaArtykulyNieWewnetrzNaglowka();
if((not czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not czy_ma_artykuly))then
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=CzyRozdzialMaRozdzialyNieWewnetrzNaglowka();
end;
end;
if((czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka)and(not glowny_ujemny_rozdzial))then
tab_numer[#tab_numer+1]=0;
end;
end;
else
if((artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka)or(czy_w_rozdziale_rejestrowane_osobno_artykuly))then
-----
tab_poziomowo={};
HNumerPoziomu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
HNumerArtykulu=stronicowyparser_potrzebne_modul.LiczonyHNumer();
-----
artykuly_w_rozdziale_nie_tylko_wewnatrz_naglowka=nil;
czy_w_rozdziale_rejestrowane_osobno_artykuly=nil;
----
k=1;
tab_poprzedni_artykul_w_bazie=nil;
end;
---
if(not czy_zera)then
if((((not czy_nienilowy_rozdzial)and(m==1))or((czy_nienilowy_rozdzial)and(m>=1)))and(k==1))then
local numer=tab_lista[2][p][2][1];
local poczatek=tab_lista[2][p][2][2];
if(((not czy_nienilowy_rozdzial)and(mw.ustring.match(poczatek,"^:")))or(numer+poziom_numeracji_artykulu==0))then
for s=p+1,#tab_lista[2],1 do
if(CzyWliczacBezPoziomowo(p,s))then
local numer=tab_lista[2][s][2][1];
local poczatek=tab_lista[2][s][2][2];
local numeracja_artykulu=tab_lista[2][s][2][3];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if((mw.ustring.match(poczatek,"^#"))or(numer+poziom_numeracji_artykulu>0))then
if(((#tab_numer>0)and(tab_numer[#tab_numer]~=0))or(#tab_numer==0))then
table.insert(tab_numer,0);
end;
tab_poziomowo={};
czy_zera=true;
break;
elseif((not mw.ustring.match(poczatek,"^:"))and(not(#poczatek==0)))then
break;
end;
end;
end;
end;
end;
else
local numer=tonumber(tab_lista[2][p][2][1]);
local poczatek=tab_lista[2][p][2][2];
local id=tab_lista[2][p][4];
local function DodajUsunNumerek(jedno,drugie,trzecie)
if((not jedno)and(not drugie)and(not trzecie))then return;end;
if((#tab_numer>(HNumerPoziomowNaglowkow(0) or 0)+poziom_zerowego_naglowka+poziom_srednikowego_naglowka))then
czy_zera=false;
tab_poziomowo={};
table.remove(tab_numer,#tab_numer);
if(#tab_numer>0)then
tab_numer[#tab_numer]=(tab_numer[#tab_numer] or 0)+1;
end;
czy_rozdzial_z_poczatkiem_jedynki=true;
end;
end;
DodajUsunNumerek(((mw.ustring.match(poczatek_poprz,"^:"))and(mw.ustring.match(poczatek,"^#"))),((#poczatek_poprz==0)and(not id_poprz)and(#poczatek>0)and(not id)),((#poczatek_poprz+poprz_numeracji_rozdzialu_lub_artykulu==0)and(numer+poziom_numeracji_artykulu>0)));
end;
if((not czy_zera)
and((k==1)and(not w_rozdziale)and(tab_lista_artykulow_w_ksiazce[m+1])
and(((m==1)and(not czy_nienilowy_rozdzial)and(((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)or(tab_lista_artykulow_w_ksiazce[m+1][1][2][1]>0)))
or((m>1)and(czy_nienilowy_rozdzial)and((artykul_w_bazie[2][1]+poziom_numeracji_artykulu)==0)))
))then
local czy_sa_jakies_artykuly_niezerowe=false;local ile=0;
local poziom_zerowy=artykul_w_bazie[2][1]+poziom_numeracji_artykulu;
if(poziom_zerowy)then
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>p)then
local poziom_artykulu=artykul_w_bazie[2][1];
local poziom_numeracji_artykulu=PoziomNumeracji(numeracja_artykulu);
if(poziom_artykulu+poziom_numeracji_artykulu>0)then
czy_sa_jakies_artykuly_niezerowe=true;
break;
end;
end;
end;
for h,artykul_w_bazie in ipairs(tab_lista[2])do
if(h>=p)then
ile=ile+1;
end;
end;
end;
if(((poziom_zerowy==0)and(czy_sa_jakies_artykuly_niezerowe)or(not czy_nienilowy_rozdzial))or(poziom_zerowy>0))then
if(ile<=5)then
table.insert(tab_numer,0);
else
nilowanie_poprzedniego_rejestru_tab_poziomowo=true;
end
end;
end;
end;
ostatni_poczatek_artykulu=poziom_poczatku_artykulu;
-----
local poziom_zerowego_artykulu_poprz=poziom_zerowego_artykulu;
poziom_artykulu,poziom_zerowego_artykulu=ToNumberPoziomArtykulu(poziom_artykulu);
local poziom_zerowego_artykulu_aktualny=poziom_artykulu;
poziom_zerowego_artykulu=ZerowyArtykul(tab_lista[2],p,w_rozdziale,poziom_zerowego_artykulu,poziom_zerowego_naglowka,poziom_zerowego_artykulu_poprz);
----
local czy_sredniki=mw.ustring.match(poziom_poczatku_artykulu,"^(;+)");
if(czy_sredniki)then
poziom_zerowego_naglowka=0;
if(glowny_ujemny_rozdzial)then
HNumerPoziomow=HNumerPoziomow_4;
HNumerPoziomow_4=nil;
tab_numer=tab_numer_4;
poziom_pierwszego_ujemnego_naglowka=nil;
glowny_ujemny_rozdzial=nil;
----
end;
KoniecSpisuTresci(poziom_naglowka_bez_poprawki,-1,true);
end;
----
local poziom_czysty_artykulu=poziom_artykulu;
----
local __poziom_poczatku_rozdzialu= (not czy_poczatek_rozdzialu) and poziom_poczatku_rozdzialu or poczatek_poprz;
local __poziom_rozdzialu=(not czy_poczatek_rozdzialu) and poziom_rozdzialu or poziom_artykulu;
poziom_artykulu,staly_poziom_rozdzialu_z_artykulami=PlusIlesDoPoziomuArtykulu(poziom_artykulu,poziom_poczatku_artykulu,__poziom_rozdzialu,__poziom_poczatku_rozdzialu,staly_poziom_rozdzialu_z_artykulami);
----
poziom_zerowego_naglowka=czy_sredniki and 0 or poziom_zerowego_naglowka;
poziom_zerowego_artykulu=czy_sredniki and 0 or poziom_zerowego_artykulu;
----
poziom_srednikowego_naglowka=czy_sredniki and 0 or poziom_srednikowego_naglowka;
----
poziom_zerowego_naglowka=((ostatni_artykul_w_rozdziale)and(not w_rozdziale)and(poziom_zerowego_naglowka>0)and(poziom_zerowego_artykulu_aktualny==0)) and (poziom_zerowego_naglowka-1) or poziom_zerowego_naglowka;
if((ostatni_artykul_w_rozdziale)and(not w_rozdziale))then
ostatni_artykul_w_rozdziale=nil;
end;
----
if((poziom_znakowy_rozdzialu<0)and(rozdzial==""))then
poziom_artykulu=poziom_naglowka+poziom_artykulu+poziom_zerowego_artykulu+(poziom_spisu_tresci_dodatek or 0);
else
poziom_artykulu=poziom_artykulu+poziom_zerowego_artykulu+(ostatni_rozdzial_centrowany or 0)+(ostatni_rozdzial_dodatni or 0)+poziom_zerowego_naglowka+((not czy_sredniki)and poziom_srednikowego_naglowka or 0)+(poziom_spisu_tresci_dodatek or 0);
end;
----
local poziom_podany_artykulu_bez_numeracji=poziom_artykulu;
poziom_artykulu=poziom_artykulu+(poziom_numeracji_artykulu or 0);
mw.log(artykul,poziom_artykulu)
----
local __poprz_poziom_rozdzialu_lub_artykulu=((poziom_znakowy_rozdzialu>0) and poprz_poziom_rozdzialu_lub_artykulu or poziom_naglowka);
local __poprz_czysty_poziom_rozdzialu_lub_artykulu=(poziom_znakowy_rozdzialu>0) and poprz_czysty_poziom_rozdzialu_lub_artykulu or poziom_numeracji_rozdzialu;
if(not w_rozdziale)then
if(k==1)then
staly_dodatek_rozdzialu_temp=staly_dodatek_rozdzialu_roz;
end;
end;
poziom_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]=PoziomNumerNaglowka(poziom_podany_artykulu_bez_numeracji,poziom_numeracji_artykulu,__poprz_poziom_rozdzialu_lub_artykulu,__poprz_czysty_poziom_rozdzialu_lub_artykulu,staly_dodatek_rozdzialu_temp--[[staly_dodatek]]);
if(not w_rozdziale)then staly_dodatek_rozdzialu=staly_dodatek_rozdzialu_temp;end;
----
local prefix_poziom_artykulu=poziom_artykulu;
local function WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu)
local b=0;
local tab_artykul_w_bazie=mw.text.split(artykul,"/");
if((tab_poprzedni_artykul_w_bazie)and((czy_w_podreczniku_poprz)and(czy_w_podreczniku)))then
if((#tab_artykul_w_bazie>1)or(#tab_poprzedni_artykul_w_bazie>1))then
for c=1,#tab_artykul_w_bazie,1 do
local podstrona_artykul=tab_artykul_w_bazie[c];
local podstrona_poprzedni_artykul=tab_poprzedni_artykul_w_bazie[c];
if(podstrona_artykul==podstrona_poprzedni_artykul)then
b=b+1;
else
break;
end;
end;
end;
else
if(k==1)then
if(#tab_artykul_w_bazie>1)then
local podrozdzial_artykulu=tab_artykul_w_bazie[1];
podrozdzial_artykulu=parametry_modul["Odstępy"]{[1]=podrozdzial_artykulu,[2]="tak",};
podrozdzial_artykulu=mw.getContentLanguage():ucfirst(podrozdzial_artykulu);
if(not podrozdzial_spisu)then
podrozdzial_spisu=parametry_modul["Odstępy"]{[1]=rozdzial,[2]="tak",};
podrozdzial_spisu=mw.getContentLanguage():ucfirst(podrozdzial_spisu);
end;
local czy_z_rozdzialem=(podrozdzial_artykulu==podrozdzial_spisu);
if(czy_z_rozdzialem)then b=1;end;
end;
end
end;
if((#tab_artykul_w_bazie==b)and(#tab_poprzedni_artykul_w_bazie==b))then b=b-1;end;
if(not poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
if(poziom_artykulu==poprz_poziom_artykulu_bez_b)then
if((k>=2)and(czy_w_podreczniku)and(staly_dodatek_artykulu[2])and(staly_dodatek_artykulu[1]==0)and(#tab_poprzedni_artykul_w_bazie>1)and(b>0)and(#tab_poprzedni_artykul_w_bazie>=b+1))then
staly_dodatek_artykulu[1]=b;
staly_dodatek_artykulu[2]=false;
end;
if(((k==2)or(staly_dodatek_artykulu[3]))and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
elseif((k>2)and(czy_w_podreczniku)and((staly_dodatek_artykulu[3] or 0)+2==k)and(b>0))then
staly_dodatek_artykulu[3]=nil;
staly_dodatek_artykulu[1]=b;
end;
local poziom_numeracji=b-(staly_dodatek_artykulu[1] or 0);
return ((czy_w_podreczniku)and ((poziom_numeracji>=0)and poziom_numeracji or 0)or(dodatek_poprz)),staly_dodatek_artykulu,tab_artykul_w_bazie;
elseif(poziom_artykulu~=poprz_poziom_artykulu_bez_b)then
staly_dodatek_artykulu={b,true};
if((k==2)and(not czy_w_podreczniku))then
staly_dodatek_artykulu[3]=k;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
return 0,staly_dodatek_artykulu,tab_artykul_w_bazie;
end;
-----
local dodatek;
dodatek,staly_dodatek_artykulu,tab_artykul_w_bazie=WielopoziomowyAdres(poziom_artykulu,poprz_poziom_artykulu_bez_b,tab_poprzedni_artykul_w_bazie,staly_dodatek_artykulu);
poprz_poziom_artykulu_bez_b=poziom_artykulu;
local numer_poziomu=HNumerPoziomow(poziom_artykulu);
-----
if(not w_rozdziale)then
if(poziom_znakowy_rozdzialu<0)then
if(poziom_artykulu<=(poziom_pierwszego_ujemnego_naglowka or 0))then
tab_poziomowo=tab_numer_4;
tab_numer={};
HNumerPoziomu=HNumerPoziomow_4;
HNumerArtykulu(poziom_artykulu,HNumerPoziomu(0));
else
local numer=numer_rozdzialu-numer_poziomu;
if(numer>=0)then
local tab_numer_s=tab_numer;
local tab_poziomowo_s=tab_poziomowo;
tab_numer={};tab_poziomowo={};
if(#tab_numer_s>=numer_poziomu-1)then
for i=1,numer_poziomu-1,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=numer_poziomu,#tab_numer_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_numer_s[i];
end;
for i=1,#tab_poziomowo_s,1 do
tab_poziomowo[i+#tab_numer_s-numer_poziomu+1]=tab_poziomowo_s[i];
end;
else
for i=1,#tab_numer_s,1 do
tab_numer[i]=tab_numer_s[i];
end;
for i=1,numer_poziomu-1,1 do
tab_numer[i+#tab_numer_s]=tab_poziomowo_s[i];
end;
for i=numer_poziomu,#tab_poziomowo_s,1 do
tab_poziomowo[i-numer_poziomu+1]=tab_poziomowo_s[i];
end;
end;
end;
end;
end;
end;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
if((not w_rozdziale)and(poziomowo)and(poziom_znakowy_rozdzialu<0))then
if((numer_rozdzialu>=numer_poziomu)and(numer_poziomu>=1))then
HNumerPoziomu(poziom_artykulu,1);
HNumerArtykulu(poziom_artykulu,1);
end;
end;
local stala=poziom_artykulu;
if(czy_rozdzial_z_poczatkiem_jedynki)then
HNumerPoziomu(stala,1);
HNumerArtykulu(stala,1);
end;
local numer_poziomu=HNumerPoziomu(stala);
poziom_artykulu=stala+dodatek;
local numer=HNumerArtykulu(poziom_artykulu);
local roznica=numer_poziomu-numer;
if(roznica>0)then
numer=HNumerArtykulu(poziom_artykulu,numer_poziomu);
end;
if(#tab_poziomowo<numer)then
for i=#tab_poziomowo+1,numer,1 do
table.insert(tab_poziomowo,1);
end;
else
if(#tab_poziomowo>numer)then
for i=#tab_poziomowo,numer+1,-1 do
table.remove(tab_poziomowo,i);
end;
end;
tab_poziomowo[#tab_poziomowo]=(tab_poziomowo[#tab_poziomowo] or 0)+1;
end;
end;
----
tab_poprzedni_artykul_w_bazie=tab_artykul_w_bazie;
poprz_numeracji_rozdzialu_lub_artykulu=poziom_numeracji_artykulu;
poprz_poziom_rozdzialu_lub_artykulu=poziom_artykulu;
poprz_czysty_poziom_rozdzialu_lub_artykulu=poziom_podany_artykulu_bez_numeracji;
poziom_srednikowego_naglowka=czy_sredniki and poziom_czysty_artykulu or poziom_srednikowego_naglowka;
numer_poprz=(not w_rozdziale)and tonumber(tab_lista[2][p][2][1]) or ((w_rozdziale)and numer_poprz or nil);
poprz_numer_rozdzialu_lub_artykulu=numer_poziomu;
poczatek_poprz=tab_lista[2][p][2][2];
id_poprz=tab_lista[2][p][4];
czy_w_podreczniku_poprz=czy_w_podreczniku;
dodatek_poprz=dodatek;
end;
local wartosc;
if(not czy_w_rozdziale_rejestrowane_osobno_artykuly)then
wartosc=__FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,nil,tab_lista[2][p][5],przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url);
if(wartosc)then return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
if(not poziomowo)then
i=i+1;
else
if((ostatni_artykul_w_rozdziale)and(w_rozdziale))then
HNumerPoziomow=stare_HNumerPoziomu_poza_rozdzialem;
stare_HNumerPoziomu_poza_rozdzialem=nil;
tab_numer=tab_numer_w_rozdziale;
poprzedni_tab_poziomowo=nil;
-----
poziom_zerowego_artykulu=0;
-----
czy_sa_artykuly_lub_rozdzialy_w_rozdziale_nie_wewnatrz_naglowka=nil;
if((#tab_numer>0)and(tab_numer[#tab_numer]==0))then
tab_numer[#tab_numer]=nil;
end;
else
if(not nilowanie_poprzedniego_rejestru_tab_poziomowo)then
poprzedni_tab_poziomowo=tab_poziomowo;
else
poprzedni_tab_poziomowo={1,};
end;
end;
end;
k=k+1;
end;
end;
if(not czy_ma_elementy)then
poprzedni_tab_poziomowo=nil;
end;
else
poprzedni_tab_poziomowo=nil;
end;
end;
end;
return;
end;
local function ZamienNumerArtykuluNaTabele(numer_artykulu)
local tab_numer_artykulu=mw.text.split(numer_artykulu,".",true);
return tab_numer_artykulu;
end;
local function UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu)
if(#tab_numer_artykulu<=1)then return tab_numer_artykulu;end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local parametry_modul=require("Module:Parametry");
local nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly=stronicowyparser_modul["DaneUkładuAutonawigacji"](frame,tabela_listy_danych_analizy_ksiazki);
if((not tab_inne_spisy)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tab_inne_spisy)))then return tab_numer_artykulu;end;
local tab_w_spis={};
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(tab_lista[2])then
for p,artykul_w_bazie in ipairs(tab_lista[2])do
if((m>1)and(poziom_rozdzialu==1))then break;end;
local czy_table_baza_artykulu=parametry_modul.TypeTable(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local czy_artykul=nil;
for _,tab_lub_str in ipairs(tab_inne_spisy)do
local czy_tab_lub_str=parametry_modul.TypeTable(tab_lub_str);
if(czy_tab_lub_str)then
if(tab_lub_str[1]==artykul)then
czy_artykul=true;
end;
else
if(tab_lub_str==artykul)then
czy_artykul=true;
end;
end;
end;
if(czy_artykul)then
tab_w_spis[artykul]=true;
end;
end;
end;
end;
local czy_w_spis=true;
for _,name in ipairs(tab_inne_spisy)do
local czy_table_name=parametry_modul.TypeTable(name);
czy_w_spis=czy_w_spis and tab_w_spis[czy_table_name and name[1] or name];
if(not czy_w_spis)then break;end;
end;
if(not czy_w_spis)then
return tab_numer_artykulu;
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
table.remove(tab_numer_artykulu,1);
end;
if((tab_numer_artykulu)and(#tab_numer_artykulu>1)and(tab_numer_artykulu[1])and(tab_numer_artykulu[1]=='1'))then
local nazwa_spisu,numer_spisu;
local czy_jedno=true;local pierwszy_rozdzial;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local poziom_rozdzialu=tab_lista[1][2][1];
if(m>1)then
if(poziom_rozdzialu==1)then
break;
elseif(m==2)then
pierwszy_rozdzial=poziom_rozdzialu;
elseif(m>2)then
czy_jedno=czy_jedno and pierwszy_rozdzial and (pierwszy_rozdzial<poziom_rozdzialu);
end;
end;
end;
if(czy_jedno)then
table.remove(tab_numer_artykulu,1);
end;
end;
return tab_numer_artykulu;
end;
local function IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu)
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
if(#tab_numer_artykulu<1)then return tab_numer_artykulu;end;
local tab_numer_spisu=ZamienNumerArtykuluNaTabele(numer_spisu);
local lens=#tab_numer_spisu;
for i=lens,1,-1 do
if(i==lens)then
tab_numer_artykulu[1]=tab_numer_spisu[i];
else
table.insert(tab_numer_artykulu,1,tab_numer_spisu[i]);
end;
end;
return tab_numer_artykulu;
end;
p["PobierzNumerArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local nazwa_artykulu,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((((dane==2)or(dane==3))and(artykul=="")and(rozdzial==nazwa_artykulu))or(((dane==1)or(dane==3))and(artykul~="")and((nazwa_artykulu==artykul)or(((przekierowanie)and(parametry_modul.TypeString(przekierowanie))and(przekierowanie==nazwa_artykulu))or(parametry_modul.TypeTable(przekierowanie)and(przekierowanie[1]==nazwa_artykulu))))))then
if(s==ktory)then
if(poziomowo)then
local numer_artykulu=(table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)
and(((#tab_numer>0)and((tonumber(tab_numer[1]) or 1)>1))or((#tab_numer==0)and(#tab_poziomowo>0)and((tonumber(tab_poziomowo[1]) or 1)>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={};
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then return numer_artykulu,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
return table.concat(tab_numer_artykulu,"."),glowny_spis_tresci_lub_rozdzial_ksiazki;
else
return i,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
end;
s=s+1;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzNazwęArtykułu"]=function(frame,tabela_listy_danych_analizy_ksiazki)
local s=1;
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local dane_szablonu;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki)
----
dane_szablonu=dane_szablonu or pierwszy_parametr_szablonu();
local numer,czy_nazwa,dane=dane_szablonu[1],dane_szablonu[2],dane_szablonu[3];
----
if((not poziomowo)and(i==numer))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
elseif(poziomowo)then
local function NumerArtykulu(tab_numer,tab_poziomowo)
return (table.concat(tab_numer,".")..((#tab_numer>0) and ((#tab_poziomowo>0) and "." or "") or "")..table.concat(tab_poziomowo,"."));
end;
local function WynikArtykulowyZNumeru(numer_artykulu)
if((((dane==2)or(dane==3))and(artykul=="")and(numer_artykulu==numer))or(((dane==1)or(dane==3))and(artykul~="")and(numer_artykulu==numer)))then
if(s==ktory)then
if(artykul~="")then
local wartosc=(not czy_nazwa) and artykul or (nazwa or artykul);
return wartosc;
else
return rozdzial;
end;
else
s=s+1;
end;
end;
end;
local numer_artykulu=NumerArtykulu(tab_numer,tab_poziomowo);
if((not nazwa_spisu)or(not numer_spisu)
or ((not glowny_spis_tresci_lub_rozdzial_ksiazki)and(((#tab_numer>0)and((tonumber(tab_numer[1]) or 1)>1))or((#tab_numer==0)and(#tab_poziomowo>0)and((tonumber(tab_poziomowo[1]) or 1)>1))))
or((glowny_spis_tresci_lub_rozdzial_ksiazki)and((numer_spisu or 1)>1))
)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
elseif((numer_spisu)and(numer_spisu==1))then
if(glowny_spis_tresci_lub_rozdzial_ksiazki)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
else
local tab_numer_artykulu=ZamienNumerArtykuluNaTabele(numer_artykulu);
tab_numer_artykulu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu);
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
else
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(not numer_spisu_tresci)then
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
local tab_numer_artykulu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_artykulu,numer_spisu_tresci);
tab_numer_artykulu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_artykulu) or tab_numer_artykulu;
local numer_artykulu=table.concat(tab_numer_artykulu,".");
local wynik=WynikArtykulowyZNumeru(numer_artykulu);
if(wynik)then return wynik,glowny_spis_tresci_lub_rozdzial_ksiazki;end;
end;
end;
end;
local wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki=PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,true);
return wartosc,glowny_spis_tresci_lub_rozdzial_ksiazki;
end;
p["PobierzDaneKsiążki"]=function(frame,tabela_listy_danych_analizy_ksiazki,kodowanie_nie_json)
local tab_dane_ksiazki=nil;
local s=1;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local args_kopia;
local tab_spis;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu=parametry_modul["KopiujTabelęElementów"](odczyt_tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu);
setmetatable(tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local pierwszy_spis_tresci=nil;
local artykul_spisowy=nil;
local function __FUNKCJA(poziomowo,i,ktory,pierwszy_parametr_szablonu,rozdzial,artykul,tab_numer,tab_poziomowo,czy_nienilowy_rozdzial,czy_artykuly_podrecznikowe,przekierowanie,nazwa,artykul_spisu,nazwa_spisu,numer_spisu,tab_lista_artykulow_w_ksiazce,glowny_spis_tresci_lub_rozdzial_ksiazki,czy_dodane,czy_inna_ksiazka,czy_url)
if((artykul_spisu)and(nazwa_spisu))then
if((artykul_spisu~=nazwa_spisu))then
if(not artykul_spisowy)then return false;else return true;end;
elseif((not artykul_spisowy)and(artykul_spisu==nazwa_spisu))then
artykul_spisowy=true;
end;
end;
if(not tab_dane_ksiazki)then tab_dane_ksiazki={};end;
if(not tab_dane_ksiazki[rozdzial])then tab_dane_ksiazki[rozdzial]={};end;
local tab_rozdzial=tab_dane_ksiazki[rozdzial];
local numer_rozdzialu=tab_numer and table.concat(tab_numer,".") or "";
if((nazwa_spisu)and(numer_spisu)and(not glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local numer_spisu_tresci;local glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci;
if((numer_spisu)and(numer_spisu==1))then
if(not glowny_spis_tresci_lub_rozdzial_ksiazki)then
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
else
if((not tab_spis)or(not tab_spis[nazwa_spisu]))then
if(not args_kopia)then
local args=parametry_modul.PobierzArgsParametry(frame,true);
args_kopia=parametry_modul["KopiujRekurencyjnieTabelęElementów"](args);
end;
args_kopia[1]=nazwa_spisu;
numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=p["PobierzNumerArtykułu"]({args=args_kopia,},tabela_listy_danych_analizy_ksiazki);
if(not tab_spis)then tab_spis={};end;
tab_spis[nazwa_spisu]={numer_spisu_tresci,glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci,};
else
local tab_element=tab_spis[nazwa_spisu];
numer_spisu_tresci=tab_element[1];
glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci=tab_element[2];
end;
if(numer_spisu_tresci)then
local tab_numer_rozdzialu=IntegrowanieNumeracjiArtykuluZWyliczaniemSpisuTresci(numer_rozdzialu,numer_spisu_tresci);
tab_numer_rozdzialu=(not glowny_spis_tresci_lub_rozdzial_ksiazki_spisu_tresci) and UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu) or tab_numer_rozdzialu;
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
elseif((not pierwszy_spis_tresci)and(nazwa_spisu)and(numer_spisu)and(glowny_spis_tresci_lub_rozdzial_ksiazki)and(numer_rozdzialu~=""))then
local czy_spis_tresci=tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu[rozdzial];
if(czy_spis_tresci)then
pierwszy_spis_tresci=true;
local tab_numer_rozdzialu=ZamienNumerArtykuluNaTabele(numer_rozdzialu);
tab_numer_rozdzialu=UsuwaniePierwszychJedynekZWyliczaniaSpisuTresci(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce,tab_numer_rozdzialu);
numer_rozdzialu=table.concat(tab_numer_rozdzialu,".");
end;
end;
if(not tab_rozdzial[numer_rozdzialu])then
tab_rozdzial[numer_rozdzialu]={};
end;
local tab_numer_rozdzialu=tab_rozdzial[numer_rozdzialu];
if(not tab_numer_rozdzialu[artykul])then
tab_numer_rozdzialu[artykul]={};
end;
local tab_artykul=tab_numer_rozdzialu[artykul];
local numer_artykulu=tab_poziomowo and table.concat(tab_poziomowo,".") or "";
if(not tab_artykul[numer_artykulu])then
tab_artykul[numer_artykulu]={};
end;
local tab_numer_artykulu=tab_artykul[numer_artykulu];
local czy_tabelka=parametry_modul.TypeTable(przekierowanie);
----
table.insert(tab_numer_artykulu,{["przekierowanie"]=czy_tabelka and przekierowanie[1] or ((not czy_tabelka) and przekierowanie or nil),["kod języka"]=czy_tabelka and przekierowanie[3] or nil,["kod projektu"]=czy_tabelka and przekierowanie[4] or nil,["pełna nazwa książki"]=(czy_tabelka and przekierowanie[2]) and nazwy_modul["NazwaModułu"](przekierowanie[2][1],przekierowanie[2][2],przekierowanie[2][3],"") or nil,["link"]=czy_tabelka and przekierowanie[5] or nil,["nazwa"]=nazwa,["spis treści"]=czy_nienilowy_rozdzial,["czy w podręczniku"]=(((artykul~="")or(numer_artykulu~="")) and ((czy_artykuly_podrecznikowe) and true or nil) or nil),["dodane"]=czy_dodane,["numer"]=s,["inna książka"]=czy_inna_ksiazka,["url"]=czy_url,});
----
s=s+1;
return false;
end;
PobierzNumerLubNazweArtykulu(frame,tabela_listy_danych_analizy_ksiazki,__FUNKCJA,false,true);
return (not kodowanie_nie_json) and mw.text.jsonEncode(tab_dane_ksiazki,mw.text.JSON_PRESERVE_KEYS) or tab_dane_ksiazki;
end;
return p;
br0dde586pzegd583mojtxzdnt40jed
Moduł:StronicowyParser/SpisTreści
828
58945
551817
551367
2026-08-15T02:51:40Z
Persino
2851
551817
Scribunto
text/plain
local p={};
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)
local parametry_modul=require("Module:Parametry");
local ile=0;
for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do
i=parametry_modul.TypeNumber(i) and i or nil;
if((i)and(i>1))then
ile=ile+#(tabela_rozdzial_artykulow2_i or {});
end;
end;
return ile;
end;
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
---
local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu;
if(numer_rodzaju_artykulu)then
--mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu)
numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6);
end;
---
--Rozdzialy początek
local znaki_niedozwolone;
local function ParametrPierwszy(tab_artykul,czy_niedozwolone)
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
----
local znaki_niedozwolone;
if(czy_niedozwolone)then
znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]");
end;
----
--if(artykul)then
--artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",}
--artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul);
--end;
----
--if(parametry)then
-- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
-- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",}
-- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry);
--end;
----
--if(naglowek)then
-- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
-- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",}
-- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek);
--end;
----
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
end;
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe;
----
local function RozwijanieNazwy(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(not wynik)then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(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)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or ""));
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
end);
if(wynik)then return wynik;end;
end;
end);
return szablon,true;
elseif(nazwa_szablonu=="Br")then
return " ",false;
elseif(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or ""));
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true;
end;
end);
if(wynik)then return wynik,jaki_wynik;end;
else
return wynik,false;
end;
return nil,true;
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(nazwa=="br")then
return " ";
end;
end;
return szablon;
end;
if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
local czy_tablica=nil;local tablica_przekierowania=nil;
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
if(not czy_tablica)then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}
--tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]");
tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,};
else
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
if(not czy_inna_ksiazka)then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
else
local artykul=tablica_przekierowania[2];
local parametry=tablica_przekierowania[3];
local naglowek=tablica_przekierowania[4];
czy_tablica=(artykul)and(parametry or naglowek);
end;
if(not czy_tablica)then
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
tablica_artykulow_zebranych[3]=true;
end;
end;
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
----
if(tab_pozycja_elementow_w_spisie_rzeczy[2])then
local czy_szablon_wszystko=false;
tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod);
czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon;
return wynik;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]);
end;
local specjalne_modul=require("Module:Specjalne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]);
tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",};
end;
----
if(znaki_niedozwolone)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści");
end;
end;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
local stara_nazwa_jednostki=nazwa_jednostki;
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or "");
--local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
--local strona=(tablica_przekierowania)
local przekierowanie;
if(--[[strona--]]tablica_przekierowania)then
--nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
--przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie)
przekierowanie=tablica_przekierowania[2];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4])
and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}
or przekierowanie
)
or nil;
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
else
nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
end;
local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2];
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tab_stare,"TYTAN1")
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2")
elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",};
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
else
tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
if(tab_pozycja_elementow_w_spisie_rzeczy[2])then
local czy_szablon_wszystko=false;
tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod);
czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon;
return wynik;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]);
end;
local specjalne_modul=require("Module:Specjalne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]);
tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[3])then
tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[4])then
tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",};
end;
local wiki_modul=require("Module:Wiki");
-----
local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1;
-----
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then
tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={};
end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
end;
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN")
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
end;
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local specjalne_modul=require("Module:Specjalne");
local szablonowe_modul=require("Module:Szablonowe");
local html_modul=require("Module:Html");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
-----
local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
-----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
----
local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(dodatek)then return dodatek;end;
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)
----
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
else
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
end;
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
----
if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
return szablon;
end;
end);
if(wynik)then return wynik;end;
----
local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1");
return rozdzial_na_tekst;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then
local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
return rozdzial_na_tekst;
else
return "";
end;
end);
----
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst);
return rozdzial_na_tekst;
end;
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_modulu=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or "");
---
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
---
local techniczne_modul=require("Module:Techniczne");
local szablonowe_modul=require("Module:Szablonowe");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
local przekierowanie_spisu_tresci=nil;
local tab_nazwa_spisow_przekierowaniowych={};
--[[if(adres_ksiazki_glownego_spisu_tresci)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
end;]]
--if(adres_ksiazki_glownego_spisu_tresci)then
-- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
-- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
-- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
-- end;
if(strona)then
local html_modul=require("Module:Html");
strona=html_modul.DecodeHtml(strona,true);
local tabela_nazw={};
local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw);
if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end;
nazwa_modulu=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw);
nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
przekierowanie_spisu_tresci=nazwa_spisu_tresci;
----
pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
--local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
if(__FUNKCJA_ZBIERANIA_DANYCH)then
__FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
----
local techniczne_modul=require("Module:Techniczne");
----
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji;
local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
--[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "")
..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki)
..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")
.."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]]
--local tablica_analizy_obiektow_strony_dany_modul={};
--local tablica_danych_parametrow_szablonu_strony={};
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow)
local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor);
if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
if(tekst)then
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end
local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci];
tablica_spis_tresci.tekst=tekst;
tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci;
----
return tekst;
end;
end;
end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek)
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
----
local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(bez_kodow)then return;end;
----
local function PomijajLinkiOrazLicencje(szablon)
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_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu];
if(czy_szablony_licencji)then return true;end;
local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_szablony_ozdobne)then return true;end;
--local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
--local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu);
--if(wynik)then return wynik;end;
----
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end;
local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_wyzyskane_od_nazwy_szablonu)then return true;end;
end);
end;
----
local CzySzablonLinkLubLicencja=function(szablon)
local ile_szablon_linki_lub_licencje=0;
local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"),
function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then ile_szablon_linki=ile_szablon_linki+1;end;
return nil;
end);
if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end;
end;
local bez_kodow_linkow_wewnetrznych=(
not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]"))
and not CzySzablonLinkLubLicencja(szablon)
)
or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)")
or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)");
if(bez_kodow_linkow_wewnetrznych)then return;end;
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then return;end;
-----
return "";
--[[elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|","\n\n");
return szablon;]]
end;
return;
end;
if(not czy_naglowek)then
str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod);
if(wynik)then return wynik;end;
return nil,true;
end);
return str;
end;
return str;
end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end);
----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy);
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local szablonowe_modul=require("Module:Szablonowe");
local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow;
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local specjalne_modul=require("Module:Specjalne");
local tablica_artykulow_zebranych={};
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
----
--local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
--local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
----
local maksymalny_rozmiar_rozdzialu_zerowego=50;
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)
--rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
--if(poziom_rozdzialu)then
-- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
--end;
if(not tabela_artykulow)then tabela_artykulow={};end;
local spreparowany_uzyskany_tekst_rozdzialu=nil;
----
local tabela_rozdzial_artykulow;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
----
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst;
end;
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
if((poziom_rozdzialu or 0)>0)then
if(not iter)then
iter=mw.ustring.gmatch(rozdzial,"([^\n]+)");
end;
local wartosc=iter();
if(not wartosc)then
czy_rozdzial=true;
iter=nil;
else
return "","",wartosc,true;
end;
else
czy_rozdzial=true;
end;
end;
local function dane_iteratora()
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter();
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return nil;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return dane_iteratora();
end;
end;
return dane_iteratora();
end;
end;
----
local function LiniaArtykulow(linia)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod=iter();
if((not szablon) or (not kod) or(not obiekt))then return {};end;
local function SzablonAnalizujKompletnosc(szablon)
----
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)
----
return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu];
end);
return wynik;
end;
-----
local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil);
-----
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local tak_drugie=SzablonAnalizujKompletnosc(szablon);
if(tak_pierwsze)then
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3");
end;
else
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3");
end;
end;
end;
end;
local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykulow,1 do
tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykulow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local nie_pomijaj_tego_rozdzialu=false;
if((not przedrostek_listy)or(#przedrostek_listy==0))then
local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then
nie_pomijaj_tego_rozdzialu=true;
end;
else
local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(not czy_pominac_ten_rozdzial_jako_linie)then
nie_pomijaj_tego_rozdzialu=true;
else
nie_pomijaj_tego_rozdzialu=false;
end;
end;
if(nie_pomijaj_tego_rozdzialu)then
local ile=0;
local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]])
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_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod);
local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu]
or szablony_licencji[nazwa_szablonu]
--or szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_link)then ile=ile+1;end;
return czy_szablon,obiekt,kod;
end);
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then
ile=ile+1;
return true,obiekt,kod;
end;
elseif(obiekt=="LINKZ")then
ile=ile+1;
return true,obiekt,kod;
end;
end);
----
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
----
local nowa_linia=false;
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
--if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end;
if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then
tab_stare[2][1]=tab_stare[2][1]+1;
end;
if(not w_rozdziale)then
local function CzyZaliczac()
return ((not mw.ustring.match(linia,"^%w+%p+"))
and mw.ustring.match(linia,"^%s*'*%s*%w+"));
--or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ"));
end;
if(nowa_linia)then
tab_stare[2][4]=true;
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then
nowa_linia=true;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
tab_stare[2][4]=true;
tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil;
tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={};
table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare);
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
end;
end;
local function AnalizaLiniiObiekty(linia_rozwazana)
local tab_linia=LiniaArtykulow(linia_rozwazana);
for k=1,#tab_linia,1 do
local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local tab_nieobslugiwane=nil;
for szablon,obiekt,kod in iterator2 do
local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ"));
if(czy_szablon or czy_link)then
local przerwij=nil;
if(czy_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)
----
--local przerwij=nil;
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
if(tabela_spisu[1]==true)then
--local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod);
local numer_link=tabela_spisu["numer_link"];
for name,value in pairs(tabela_parametrow_szablonu)do
if(name~=numer_link)then
local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name];
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end;
for szablon,obiekt,kod in iter do
if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end;
tab_nieobslugiwane[obiekt][kod]=true;
end;
end;
end;
local tyt=tabela_parametrow_szablonu[numer_link];
przedrostek_listy="";
tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$");
przerwij=true;
else
przedrostek_listy="";
tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]];
szablon=tabela_parametrow_szablonu[tabela_spisu["link"]];
przerwij=true;
end;
end;
end);
end;
--[[if(przerwij)then
local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
for szablon2,obiekt2,kod2 in iterator3 do
if(obiekt2=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2);
local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_linku)then
szablon=szablon2;
break;
end;
elseif(obiekt2=="LINKW")then
szablon=szablon2;
break;
end;
end;
end;]]
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom;
local link_szablon=nil;
local czy_obslugiwane=nil;
local CzyObslugiwane=function()
local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod]));
czy_obslugiwane=wartosc;
return (not wartosc);
end;
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
local linia_artykokow=tab_linia[k];
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]);
--mw.log()
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--mw.logObject(tabela_rozdzial_artykulow)
else
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--[[if(przerwij)then break;end;]]
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
---
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji)
if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then
if(tabela_parametrow_szablonu_licencji)then
local autor=tabela_parametrow_szablonu_licencji["Autor"];
local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"];
local email=tabela_parametrow_szablonu_licencji["Email"];
local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"];
local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"];
local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"];
local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"];
local frame=mw.getCurrentFrame();
if(autor~=nil)then
autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,nazwa_modulu ,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(szkoly~=nil)then
szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(email~=nil)then
email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(dotyczy~=nil)then
dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(licencjonowanie~=nil)then
licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(umowa_prawna~=nil)then
umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(konsekwencje~=nil)then
konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
return true;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
end;
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
--mw.logObject(tabela_artykulow);
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
end;
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeTable(tabela_artykulow))then return;end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
for _,tab_lista in ipairs(tabela_artykulow)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then
return artykul_bez_naglowka_w_bazie;
end;
end;
end;
end;
end;
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)
local adres_ksiazki_glownego_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,};
if(ile2>0)then
local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_spisu_tresci)then
local html_modul=require("Module:Html");
strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true);
local tabela_nazw={};
local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw);
local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="")
and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw)
or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
----
if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then
if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then
----
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
if((wynik or 0)==1)then
return 1;
end;
----
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2;
pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
else
return 2;
end;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)
if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
----
local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil;
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or 2),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
---
if(not tablista_artykulow[1][1][2][1])then
for numer,tab_lista in ipairs(tablista_artykulow[1])do
if(numer>1)then
tab_element[numer]=tab_lista;
end;
end;
table.remove(tablista_artykulow,1);
end;
---
for _,tab_lista in ipairs(tablista_artykulow)do
local numer_rozdzialu=tab_lista[1][2][1];
local czy_rozdzial_centrowany=tab_lista[1][2][4];
if(numer_rozdzialu>0)then
tab_lista[1][2][1]=numer_rozdzialu+1;
end;
if(czy_rozdzial_centrowany)then break;end;
end;
---
numer=numer+1;
---
--if(not tablista_artykulow)then tablista_artykulow={};end;
----
table.insert(tablista_artykulow,1,tab_element);
if(spis_tresci)then
if(not tab_inne_spisy)then tab_inne_spisy={};end;
table.insert(tab_inne_spisy,spis_tresci);
if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end;
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
table.insert(tablista_artykulow[1][2],1,tab_stare);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)
--mw.logObject(tablista_artykulow,"TYTAn123fhh");
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
--mw.logObject(tablista_artykulow_iter,spis_tresci);
----
if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
for _,value in ipairs(tablista_artykulow_iter)do
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,value);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
if(artykul_spisu_rzeczy)then
local numer=1;
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
return tabela_artykulow,tab_inne_spisy;
end;
local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki;
----
adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien;
----
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
if(not tekst)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={};
local szablonowe_modul=require("Module:Szablonowe");
local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil);
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji);
local szablon_uklad_autonawigacji;
local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
local tabela_parametrow_szablonu_uklad_autonawigacji;
local nazwa_szablonu_uklad_autonawigacji;
local tabela_modyfikatorow_uklad_autonawigacji;
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu;
nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu;
tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow;
if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then
szablon_uklad_autonawigacji=szablon;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
if(not szablon_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
--local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji);
if(not tabela_parametrow_szablonu_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local parametry_modul=require("Module:Parametry");
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
----
local html_modul=require("Module:Html");
----
local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil;
if(czy_automat_manualny)then
local sub_nazwa_spis_tresci;
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil;
if(parametry_modul.CzyTak(spis_tresci))then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw);
if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then
sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw);
else
sub_nazwa_spis_tresci="";
end;
else
sub_nazwa_spis_tresci="";
end;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local frame=mw.getCurrentFrame();
for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do
tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}");
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}");
return szablon;
end;
end),};
end;
local nazwy_modul=require("Module:Nazwy");
local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"];
local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil;
local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"];
local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil;
----
local tab_inne_spisy;local nazwa_glownego_spisu;
local tablista_artykulow;
local licencja;
local numer=1;
----
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
----
local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci;
if(not czy_bez_spisow_tresci)then
local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
if(spis_tresci_main)then
spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true);
---
spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,};
end;
local tabela_nazw={};
local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or pelna_nazwa_ksiazki;
if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then
return 0;
end;
nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or "";
else
nazwa_glownego_spisu="";
end;
if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
if(przekierowanie_spisu_tresci)then
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
end;
if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
end;
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
local iter=IteratorSpisTresci();
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
for spis_tresci in iter do
---
if(not parametry_modul.CzyTak(spis_tresci))then return;end;
spis_tresci=html_modul.DecodeHtml(spis_tresci,true);
spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",};
---
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
end;
end;
----
local IteratorFun=function()
local liczba=1;
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
return function()
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
liczba=liczba+1;
return strona,nazwa;
end;
end;
local tablica_stron_ksiazki={};
local tablica_stron_inne={};
local iter=IteratorFun();
local ksiazkawe_modul=require("Module:Książkowe");
local pudelko_modul=require("Module:Pudełko");
local wiki_modul=require("Module:Wiki");
local dodatkowe_artykuly=nil;
local tablica_artykulow_zebranych={};
local tab_nazwa_spisow_przekierowaniowych={};
local dodatkowe_artykuly=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local tabela_rozdzial_artykulow=nil;
----
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"")
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
----
--local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
----
for strona,nazwa in iter do
local function ZbieranieDanychStronZAutonawigacji()
if(not parametry_modul.CzyTak(strona))then return;end;
strona=html_modul.DecodeHtml(strona,true);
nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil;
if(not dodatkowe_artykuly)then
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
end;
---
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)
if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
local czy_w_podreczniku=tab_stare[5];
local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil;
local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil;
----
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
----
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
end;
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_spisu_tresci_szablonowa,pelna_nazwa_ksiazki,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
end;
ZbieranieDanychStronZAutonawigacji();
end;
----
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
end;
return p;
r0r24qjl4oq2kz0t0968e4u7f4g56yk
551818
551817
2026-08-15T02:52:43Z
Persino
2851
Anulowano wersję [[Special:Diff/551817|551817]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
551818
Scribunto
text/plain
local p={};
local function Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)
local parametry_modul=require("Module:Parametry");
local ile=0;
for i,tabela_rozdzial_artykulow2_i in pairs(tabela_rozdzial_artykulow2)do
i=parametry_modul.TypeNumber(i) and i or nil;
if((i)and(i>1))then
ile=ile+#(tabela_rozdzial_artykulow2_i or {});
end;
end;
return ile;
end;
local function WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY,tabela_rozdzial_artykulow2,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]])
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tab_pozycja_elementow_w_spisie_rzeczy,numer_rodzaju_artykulu,id,parametry_szablonu,kom=stronicowyparser_potrzebne_modul.AnalizujLinkSzablonyOrazLinki(szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nil,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
---
local numer_rodzaju_artykulu_poprz=numer_rodzaju_artykulu;
if(numer_rodzaju_artykulu)then
--mw.log(szablon,numer_rodzaju_artykulu,wliczaj_artykuly_tego_rozdzialu)
numer_rodzaju_artykulu=(wliczaj_artykuly_tego_rozdzialu)and numer_rodzaju_artykulu or (numer_rodzaju_artykulu+6);
end;
---
--Rozdzialy początek
local znaki_niedozwolone;
local function ParametrPierwszy(tab_artykul,czy_niedozwolone)
local artykul=tab_artykul[1];
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
local tablica_przekierowania=tab_artykul[4];
----
local znaki_niedozwolone;
if(czy_niedozwolone)then
znaki_niedozwolone=mw.ustring.match(artykul,"[|<>{}%[%]]");
end;
----
--if(artykul)then
--artykul=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(artykul,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--artykul=parametry_modul["Odstępy"]{[1]=artykul,[2]="tak",}
--artykul=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](artykul);
--end;
----
--if(parametry)then
-- parametry=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(parametry,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
-- parametry=parametry_modul["Odstępy"]{[1]=parametry,[2]="tak",}
-- parametry=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](parametry);
--end;
----
--if(naglowek)then
-- naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
-- naglowek=parametry_modul["Odstępy"]{[1]=naglowek,[2]="tak",}
-- naglowek=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](naglowek);
--end;
----
tab_artykul=((artykul)and(parametry or naglowek))and{[1]=artykul,[2]=parametry,[3]=naglowek,["LINK"]=true,} or artykul;
return tab_artykul,znaki_niedozwolone,tablica_przekierowania;
end;
local parametry_modul=require("Module:Parametry");
local szablonowe_modul=require("Module:Szablonowe");
local techniczne_modul=require("Module:Techniczne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_nazwowe_linkowe=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_nazwowe_linkowe;
----
local function RozwijanieNazwy(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(not wynik)then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(szablony_rozwijane_przez_javascript_nazwowe_linkowe[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(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)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or ""));
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
end);
if(wynik)then return wynik;end;
end;
end);
return szablon,true;
elseif(nazwa_szablonu=="Br")then
return " ",false;
elseif(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=tabela_parametrow_szablonu["nazwa jednostki"] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki..((nazwa_spisu_tresci~="") and ("/"..nazwa_spisu_tresci) or ""));
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true),true;
end;
end);
if(wynik)then return wynik,jaki_wynik;end;
else
return wynik,false;
end;
return nil,true;
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(nazwa=="br")then
return " ";
end;
end;
return szablon;
end;
if((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz==1)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
local numer_rodzaju_artykulu_w_podreczniku=numer_rodzaju_artykulu+1;
local czy_tablica=nil;local tablica_przekierowania=nil;
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
if(not czy_tablica)then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",}
--tab_pozycja_elementow_w_spisie_rzeczy[1]=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](tab_pozycja_elementow_w_spisie_rzeczy[1]);
znaki_niedozwolone=mw.ustring.match(tab_pozycja_elementow_w_spisie_rzeczy[1],"[|<>{}%[%]]");
tablica_artykulow_zebranych={tab_pozycja_elementow_w_spisie_rzeczy[1],0,false,};
else
tab_pozycja_elementow_w_spisie_rzeczy[1],znaki_niedozwolone,tablica_przekierowania=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],true);
local czy_inna_ksiazka=tablica_przekierowania and tablica_przekierowania[1] and tablica_przekierowania[1][5] or nil;
if(not czy_inna_ksiazka)then
czy_tablica=parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]);
else
local artykul=tablica_przekierowania[2];
local parametry=tablica_przekierowania[3];
local naglowek=tablica_przekierowania[4];
czy_tablica=(artykul)and(parametry or naglowek);
end;
if(not czy_tablica)then
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
local aktualny_artykul_ksiazki;
if(not czy_inna_ksiazka)then
aktualny_artykul_ksiazki=tab_pozycja_elementow_w_spisie_rzeczy[1][1];
else
aktualny_artykul_ksiazki=tablica_przekierowania[2]
or (parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1])and tab_pozycja_elementow_w_spisie_rzeczy[1][1] or tab_pozycja_elementow_w_spisie_rzeczy[1]);
end;
if(tablica_artykulow_zebranych[1]~=aktualny_artykul_ksiazki)then
tablica_artykulow_zebranych={aktualny_artykul_ksiazki,0,false,};
else
tablica_artykulow_zebranych[3]=true;
end;
end;
end;
end;
----
local szablonowe_modul=require("Module:Szablonowe");
----
if(tab_pozycja_elementow_w_spisie_rzeczy[2])then
local czy_szablon_wszystko=false;
tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod);
czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon;
return wynik;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]);
end;
local specjalne_modul=require("Module:Specjalne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]);
tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",};
end;
----
if(znaki_niedozwolone)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"niedozwolone znaki w spisach treści"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"niedozwolone znaki w spisach treści");
end;
end;
local nazwa_jednostki=stronicowyparser_potrzebne_modul.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
local stara_nazwa_jednostki=nazwa_jednostki;
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku])then tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku]={};end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
--local przekierowanie=pelna_nazwa_ksiazki..((nazwa_jednostki~="") and ("/"..nazwa_jednostki) or "");
--local strona=techniczne_modul.PrzekierowanieDoStrony(przekierowanie);
--local strona=(tablica_przekierowania)
local przekierowanie;
if(--[[strona--]]tablica_przekierowania)then
--nazwa_jednostki=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
--przekierowanie=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](przekierowanie)
przekierowanie=tablica_przekierowania[2];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
przekierowanie=przekierowanie and ((tablica_przekierowania[3] or tablica_przekierowania[4])
and {przekierowanie, tablica_przekierowania[3], tablica_przekierowania[4],["LINK"]=true,}
or przekierowanie
)
or nil;
nazwa_jednostki={nazwa_jednostki, tab_pozycja_elementow_w_spisie_rzeczy[1][2], tab_pozycja_elementow_w_spisie_rzeczy[1][3],["LINK"]=true,};
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
else
nazwa_jednostki=tab_pozycja_elementow_w_spisie_rzeczy[1];
if((czy_tablica)and(stara_nazwa_jednostki~=""))then
local czy_w_tab=tablica_artykulow_zebranych[2];
local czy_wsadzac=tablica_artykulow_zebranych[3];
if((not czy_wsadzac)and(czy_w_tab==0)and(tablica_artykulow_zebranych[1]==stara_nazwa_jednostki))then
local tab_stare={{stara_nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],true,tab_pozycja_elementow_w_spisie_rzeczy[6],},{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
tablica_artykulow_zebranych[2]=1;
end;
end;
end;
local ile_dodac_do_poziomu_artykulu=tablica_artykulow_zebranych[2];
local ile_dodac_do_poziomu_artykulu_lub_nil=((ile_dodac_do_poziomu_artykulu)and(ile_dodac_do_poziomu_artykulu>0))and ile_dodac_do_poziomu_artykulu or nil;
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[2] or tablica_przekierowania or tab_pozycja_elementow_w_spisie_rzeczy[5] or tab_pozycja_elementow_w_spisie_rzeczy[6] or ile_dodac_do_poziomu_artykulu_lub_nil) and ({nazwa_jednostki,tab_pozycja_elementow_w_spisie_rzeczy[2],tablica_przekierowania and (tablica_przekierowania[2] and przekierowanie or nil) or nil,((tablica_przekierowania)and(tablica_przekierowania[1])) and tablica_przekierowania[1] or nil,nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[5],ile_dodac_do_poziomu_artykulu_lub_nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or nazwa_jednostki),{#przedrostek_listy--[[+(ile_dodac_do_poziomu_artykulu and ile_dodac_do_poziomu_artykulu or 0)]],przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,id,true,(numer_rodzaju_artykulu>1) and (Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2)) or nil,};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulu_w_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tab_stare,"TYTAN1")
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulu_w_podreczniku,tab_stare);
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN2")
elseif((numer_rodzaju_artykulu_poprz)and(numer_rodzaju_artykulu_poprz>=2)and(tab_pozycja_elementow_w_spisie_rzeczy)and(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
if(tab_pozycja_elementow_w_spisie_rzeczy[1])then
if(not parametry_modul.TypeTable(tab_pozycja_elementow_w_spisie_rzeczy[1]))then
--tab_pozycja_elementow_w_spisie_rzeczy[1]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[1],[2]="tak",};
--tab_pozycja_elementow_w_spisie_rzeczy[1]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[1],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
else
tab_pozycja_elementow_w_spisie_rzeczy[1]=ParametrPierwszy(tab_pozycja_elementow_w_spisie_rzeczy[1],false);
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
if(tab_pozycja_elementow_w_spisie_rzeczy[2])then
local czy_szablon_wszystko=false;
tab_pozycja_elementow_w_spisie_rzeczy[2]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[2],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
local wynik,czy_szablon=RozwijanieNazwy(szablon,obiekt,kod);
czy_szablon_wszystko=czy_szablon_wszystko or czy_szablon;
return wynik;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
tab_pozycja_elementow_w_spisie_rzeczy[2]=frame:preprocess(tab_pozycja_elementow_w_spisie_rzeczy[2]);
end;
local specjalne_modul=require("Module:Specjalne");
tab_pozycja_elementow_w_spisie_rzeczy[2]=specjalne_modul["UsuńZnakiSpecjalne"](tab_pozycja_elementow_w_spisie_rzeczy[2]);
tab_pozycja_elementow_w_spisie_rzeczy[2]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[2],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[3])then
tab_pozycja_elementow_w_spisie_rzeczy[3]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[3],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[3]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[3],[2]="tak",[4]="tak",};
end;
if(tab_pozycja_elementow_w_spisie_rzeczy[4])then
tab_pozycja_elementow_w_spisie_rzeczy[4]=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tab_pozycja_elementow_w_spisie_rzeczy[4],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
tab_pozycja_elementow_w_spisie_rzeczy[4]=parametry_modul["Odstępy"]{[1]=tab_pozycja_elementow_w_spisie_rzeczy[4],[2]="tak",[4]="tak",};
end;
local wiki_modul=require("Module:Wiki");
-----
local numer_rodzaju_artykulow_w_nie_podreczniku=numer_rodzaju_artykulu+1;
-----
if(not tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku])then
tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku]={};
end;
--local linia_artykokow=--[[(not przerwij) and ]]tab_linia[k]--[[ or szablon]];
linia_artykokow=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(linia_artykokow,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local tab_stare={((tab_pozycja_elementow_w_spisie_rzeczy[1])and((tab_pozycja_elementow_w_spisie_rzeczy[2])or(tab_pozycja_elementow_w_spisie_rzeczy[3])or(tab_pozycja_elementow_w_spisie_rzeczy[4])or(tab_pozycja_elementow_w_spisie_rzeczy[5])or(tab_pozycja_elementow_w_spisie_rzeczy[6])))and({tab_pozycja_elementow_w_spisie_rzeczy[1],tab_pozycja_elementow_w_spisie_rzeczy[2],nil,nil,tab_pozycja_elementow_w_spisie_rzeczy[3],tab_pozycja_elementow_w_spisie_rzeczy[4],tab_pozycja_elementow_w_spisie_rzeczy[5],nil,tab_pozycja_elementow_w_spisie_rzeczy[6],}) or tab_pozycja_elementow_w_spisie_rzeczy[1],{#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,w_rozdziale,},linia_artykokow,false,false,Ile(numer_rodzaju_artykulu,tabela_rozdzial_artykulow2),};
--table.insert(tabela_rozdzial_artykulow2[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
--WsadzanieParametryDoTablicy(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
__FUNKCJA_DO_WSTAWIANIA_DO_SPISU_RZECZY(tabela_rozdzial_artykulow2,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare);
end;
--mw.logObject(tabela_rozdzial_artykulow2,"TYTAN")
return numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych;
end;
function p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local specjalne_modul=require("Module:Specjalne");
local szablonowe_modul=require("Module:Szablonowe");
local html_modul=require("Module:Html");
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_na_tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(rozdzial,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
-----
local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
local szablony_dozwolone_w_nazwach_linkowych=stronicowyparser_obiekty_modul.szablony_dozwolone_w_nazwach_linkowych;
local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
-----
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_w_nazwach_linkowych,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
----
local dodatek=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(dodatek)then return dodatek;end;
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)
----
local tab_szablon_link_intelignetny=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_szablon_link_intelignetny)then
return (not tab_szablon_link_intelignetny[4]) and tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
else
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
end;
local nazwa_zamiast_linku=stronicowyparser_potrzebne_modul.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa_zamiast_linku)then return nazwa_zamiast_linku;end;
----
if(szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu[nazwa_szablonu])then
local szablon=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
return szablon;
end;
end);
if(wynik)then return wynik;end;
----
local rozdzial_na_tekst=mw.ustring.gsub(szablon,"^{{[^{}|]*|([^{}|]*).*}}$","%1");
return rozdzial_na_tekst;
elseif(obiekt=="NOWIKI")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="PRE")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif(obiekt=="ŹRÓDŁO")then
local nazwa,zawartosc,tab_atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(zawartosc)then
local rozdzial_na_tekst=html_modul.ZnakiSpecjalneTaguNowiki(zawartosc);
return rozdzial_na_tekst;
else
return "";
end;
elseif((obiekt~="MATH")and(obiekt~="GALERIA")and(obiekt~="MAPAOBRAZU")and(obiekt~="INNEPRE"))then
local rozdzial_na_tekst=specjalne_modul["UsuńKomentarze"](szablon);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiZewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["ZamieńLinkiWewnętrzneNaTekst"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńSzablonyStylów"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnaczniki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńKategorie"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńWywołaniaPlików"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńInterwiki"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
return rozdzial_na_tekst;
else
return "";
end;
end);
----
rozdzial_na_tekst=specjalne_modul["UsuńZnakiSpecjalne"](rozdzial_na_tekst);
rozdzial_na_tekst=specjalne_modul["UsuńZbędneBiałeZnaki"](rozdzial_na_tekst);
return rozdzial_na_tekst;
end;
function p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH)
local parametry_modul=require("Module:Parametry");
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki))then return 0;end;
local nazwy_modul=require("Module:Nazwy");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_modulu=pelna_nazwa_ksiazki..((nazwa_spisu_tresci~="")and("/"..nazwa_spisu_tresci) or "");
---
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
---
local techniczne_modul=require("Module:Techniczne");
local szablonowe_modul=require("Module:Szablonowe");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
local przekierowanie_spisu_tresci=nil;
local tab_nazwa_spisow_przekierowaniowych={};
--[[if(adres_ksiazki_glownego_spisu_tresci)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
end;]]
--if(adres_ksiazki_glownego_spisu_tresci)then
-- local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
-- local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
-- local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki]={};end;
-- if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki])then tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki]=true;end;
-- end;
if(strona)then
local html_modul=require("Module:Html");
strona=html_modul.DecodeHtml(strona,true);
local tabela_nazw={};
local pelna_nazwa_ksiazki_przekierowania=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](strona,tabela_nazw);
if(pelna_nazwa_ksiazki_przekierowania~=pelna_nazwa_ksiazki)then return 0;end;
nazwa_modulu=nazwy_modul["PEŁNANAZWASTRONY"](strona,tabela_nazw);
nazwa_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
przekierowanie_spisu_tresci=nazwa_spisu_tresci;
----
pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki and nazwa_spisu_tresci)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
or nil;
pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
end;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
--local tekst_rozwiniety_calego_artykulu=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,nazwa_modulu,true);
local __FUNKCJA_PARAMETRY=nil;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end,__FUNKCJA_PARAMETRY);
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
if(__FUNKCJA_ZBIERANIA_DANYCH)then
__FUNKCJA_ZBIERANIA_DANYCH(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
----
local techniczne_modul=require("Module:Techniczne");
----
local tabelalisty2=nil;
local licencja_z_autorem=true;
local tabela_artykulow=nil;
local tabela_licencji_spisu_tresci=nil;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy;
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local szablony_kompletowania_stron_woluminu=stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu;
local szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji;
local szablony_ozdobne_stron_woluminu=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
--[[local pelna_nazwa_spisu_tresci_wzor="^("..((nazwa_przestrzeni~="")and techniczne_modul["WzórDanejPrzestrzeniNazw"](nazwa_przestrzeni) or "")
..techniczne_modul["WzórNazwyStrony"](((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki)
..((nazwa_spisu_tresci~="")and ("/"..nazwa_spisu_tresci) or "")
.."(/[Ss][Pp][Ii][Ss][%s_]+[Tt][Rr][Ee][ŚśSs][Cc][Ii]))$";]]
--local tablica_analizy_obiektow_strony_dany_modul={};
--local tablica_danych_parametrow_szablonu_strony={};
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,--[[function(pelna_nazwa_szablonu,tabela_modyfikatorow)
local pelna_nazwa_spisu_tresci,strona_ze_spisem_tresci=mw.ustring.match(pelna_nazwa_szablonu,pelna_nazwa_spisu_tresci_wzor);
if(pelna_nazwa_spisu_tresci and strona_ze_spisem_tresci)then
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
if(tekst)then
----
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.spis_tresci)then tablica_ksiazki.spis_tresci={};end;
if(not tablica_ksiazki.spis_tresci[nazwa_spisu_tresci])then tablica_ksiazki.spis_tresci[nazwa_spisu_tresci]={};end
local tablica_spis_tresci=tablica_ksiazki.spis_tresci[nazwa_spisu_tresci];
tablica_spis_tresci.tekst=tekst;
tablica_spis_tresci.adres_wzgledny_spisu_tresci=strona_ze_spisem_tresci;
----
return tekst;
end;
end;
end]]nil,function(str,pelna_nazwa_strony,tablica_analizy_dany_modul,czy_naglowek)
local FunkcjaIteratoraTekstuZakodowego=function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
----
local bez_kodow=not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(bez_kodow)then return;end;
----
local function PomijajLinkiOrazLicencje(szablon)
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_szablony_licencji=stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu];
if(czy_szablony_licencji)then return true;end;
local czy_szablony_ozdobne=stronicowyparser_obiekty_modul.szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_szablony_ozdobne)then return true;end;
--local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
--local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,nazwa_szablonu);
--if(wynik)then return wynik;end;
----
if((linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu])or(inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]))then return true;end;
local tab_wyzyskane_od_nazwy_szablonu=stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(tab_wyzyskane_od_nazwy_szablonu)then return true;end;
end);
end;
----
local CzySzablonLinkLubLicencja=function(szablon)
local ile_szablon_linki_lub_licencje=0;
local _,ile=mw.ustring.gsub(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("(SZABLON)"),
function(obiekt,kod)
kod=tonumber(kod);
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then ile_szablon_linki=ile_szablon_linki+1;end;
return nil;
end);
if((ile>0)and(ile_szablon_linki_lub_licencje>0))then return true;end;
end;
local bez_kodow_linkow_wewnetrznych=(
not mw.ustring.match(szablon,szablonowe_modul.NormaWzoruKodowaniaTekstu("LINK[WZ]"))
and not CzySzablonLinkLubLicencja(szablon)
)
or not mw.ustring.match(szablon,"\n([#:*;]+)[^%S\n]*([%w%p]*)[^%S\n]*([^\n]+)")
or not mw.ustring.match(szablon,"\n([#:*;]*)[^%S\n]*([%w%p]+)[^%S\n]*([^\n]+)");
if(bez_kodow_linkow_wewnetrznych)then return;end;
local wynik=PomijajLinkiOrazLicencje(szablon);
if(wynik)then return;end;
-----
return "";
--[[elseif(obiekt=="WIKITABELA")then
szablon=mw.ustring.match(szablon,"^{|(.-)|}$");
szablon=mw.ustring.gsub(szablon,"[|!][|!]","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|[%-%+][^%S\n]+[^|\n]*","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%-","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|%+","\n\n");
szablon=mw.ustring.gsub(szablon,"\n|","\n\n");
return szablon;]]
end;
return;
end;
if(not czy_naglowek)then
str=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(str,pelna_nazwa_strony,tablica_analizy_dany_modul,function(szablon,obiekt,kod)
local wynik=FunkcjaIteratoraTekstuZakodowego(szablon,obiekt,kod);
if(wynik)then return wynik;end;
return nil,true;
end);
return str;
end;
return str;
end,function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end);
----
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_nie_rozdzialy=stronicowyparser_obiekty_modul.tablica_nazw_napisu_wprowadzenia_tekstu_pomijanych_w_rozwazaniach_na_stronach_otwarcia_woluminu;
local jakie_nie_rozdzialy=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_nie_rozdzialy);
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_nie_rozdzialy,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
local numer_rozdzialu_w_ksiazce=1;
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local szablonowe_modul=require("Module:Szablonowe");
local tab_dozwolonych_szablonow_z_elementami_spisu_artykulow=stronicowyparser_obiekty_modul.tab_dozwolonych_szablonow_z_elementami_spisu_artykulow;
local czy_jest_spis_tresci=nil;
local poziom_spisu_tresci=nil;
local dalej_nie_rozwazaj_spis_tresci=nil;
local wliczaj_artykuly_tego_rozdzialu=nil;
local specjalne_modul=require("Module:Specjalne");
local tablica_artykulow_zebranych={};
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
----
--local szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_dozwolone_w_napisach_do_wprowadzenia_tekstu;
--local szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_rozwijane_przez_javascript_w_napisach_wprowadzenia_tekstu;
----
local maksymalny_rozmiar_rozdzialu_zerowego=50;
local function AnalizaRozdzialu(rozdzial,linia_rozdzialu,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany)
--rozdzial,_=mw.ustring.gsub(rozdzial,"{{[^|{}]+|([^|{}]+)[^{}]*}}","%1");
--if(poziom_rozdzialu)then
-- text=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(text,nil,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
--end;
if(not tabela_artykulow)then tabela_artykulow={};end;
local spreparowany_uzyskany_tekst_rozdzialu=nil;
----
local tabela_rozdzial_artykulow;
if(not tabela_artykulow[numer_rozdzialu_w_ksiazce])then
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
----
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(rozdzial,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany,},rozdzial,};
spreparowany_uzyskany_tekst_rozdzialu=rozdzial_na_tekst;
end;
local czy_spis_rzeczy_napis_wprowadzenia_tekstu=(poziom_rozdzialu)and(not czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci)and(jakie_spisy_tresci[spreparowany_uzyskany_tekst_rozdzialu]);
if(czy_spis_rzeczy_napis_wprowadzenia_tekstu)then
poziom_spisu_tresci=poziom_rozdzialu;
czy_jest_spis_tresci=true;
elseif((czy_jest_spis_tresci)and(not dalej_nie_rozwazaj_spis_tresci))then
if((((poziom_spisu_tresci>0)and(poziom_rozdzialu>0))or((poziom_spisu_tresci<=0)and(poziom_rozdzialu<=0)))and(math.abs(poziom_spisu_tresci or 0)<math.abs(poziom_rozdzialu)))then
wliczaj_artykuly_tego_rozdzialu=true;
else
wliczaj_artykuly_tego_rozdzialu=nil;
dalej_nie_rozwazaj_spis_tresci=true;
end;
end;
local function iteratorTekstuNaglowka()
local re="([#:*;]*)[^%S\n]*([%d%.]*[^%S\n]*[^\n]+)";
local iter=nil;
local tak=nil;
local czy_rozdzial=nil;
return function()
if(not czy_rozdzial)then
if((poziom_rozdzialu or 0)>0)then
if(not iter)then
iter=mw.ustring.gmatch(rozdzial,"([^\n]+)");
end;
local wartosc=iter();
if(not wartosc)then
czy_rozdzial=true;
iter=nil;
else
return "","",wartosc,true;
end;
else
czy_rozdzial=true;
end;
end;
local function dane_iteratora()
if(not iter)then
iter=mw.ustring.gmatch(text,"\n"..re);
end;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=iter();
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return nil;
end;
end;
if(not tak)then
tak=true;
local przedrostek_listy,tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci=mw.ustring.match(text,"^"..re);
if(przedrostek_listy and tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci)then
local wyzyskane_wywolanie_szablonu_spis_tresci,tekstowy_przedrostek=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(tekstowy_przedrostek_z_wyzyskanym_wywolaniem_szablonu_spis_tresci);
return przedrostek_listy,tekstowy_przedrostek,wyzyskane_wywolanie_szablonu_spis_tresci,false;
else
return dane_iteratora();
end;
end;
return dane_iteratora();
end;
end;
----
local function LiniaArtykulow(linia)
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(linia,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local szablon,obiekt,kod=iter();
if((not szablon) or (not kod) or(not obiekt))then return {};end;
local function SzablonAnalizujKompletnosc(szablon)
----
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)
----
return stronicowyparser_obiekty_modul.szablony_kompletowania_stron_woluminu[nazwa_szablonu];
end);
return wynik;
end;
-----
local tak_pierwsze=((obiekt=="SZABLON") and SzablonAnalizujKompletnosc(szablon) or nil);
-----
for szablon,obiekt,kod in iter do
if(obiekt=="SZABLON")then
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
local tak_drugie=SzablonAnalizujKompletnosc(szablon);
if(tak_pierwsze)then
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")(%s*)("..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")","%1,%2%3");
end;
else
if(tak_drugie)then
linia=mw.ustring.gsub(linia,"(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt,kod)..")(%s*)(%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu()..")","%1,%2%3");
end;
end;
end;
end;
local tabela_linii_artykulow=mw.text.split(linia,"%s*,%s*",false);
for i=1,#tabela_linii_artykulow,1 do
tabela_linii_artykulow[i]=mw.ustring.gsub(tabela_linii_artykulow[i],"&#"..mw.ustring.byte(',')..";",",");
end;
return tabela_linii_artykulow;
end;
local iterator=iteratorTekstuNaglowka();
local wliczaj_artykuly_tego_rozdzialu=((wliczaj_artykuly_tego_rozdzialu)or(not jakie_nie_rozdzialy[rozdzial]));
for przedrostek_listy,tekstowy_przedrostek,linia, w_rozdziale in iterator do
local nie_pomijaj_tego_rozdzialu=false;
if((not przedrostek_listy)or(#przedrostek_listy==0))then
local rozdzial,czy_z_kropka=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(((rozdzial)and(#rozdzial<=maksymalny_rozmiar_rozdzialu_zerowego))or(not rozdzial))then
nie_pomijaj_tego_rozdzialu=true;
end;
else
local czy_pominac_ten_rozdzial_jako_linie=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrostek_listy,linia,true,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(not czy_pominac_ten_rozdzial_jako_linie)then
nie_pomijaj_tego_rozdzialu=true;
else
nie_pomijaj_tego_rozdzialu=false;
end;
end;
if(nie_pomijaj_tego_rozdzialu)then
local ile=0;
local linia_rozwazana=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(linia,nil ,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod--[[,czy_sam_siebie]])
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_link=linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu]
or stronicowyparser_potrzebne_modul.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu ,tablica_danych_parametrow_szablonu_strony,kod);
local czy_szablon=czy_link or szablony_kompletowania_stron_woluminu[nazwa_szablonu]
or szablony_licencji[nazwa_szablonu]
--or szablony_ozdobne_stron_woluminu[nazwa_szablonu];
if(czy_link)then ile=ile+1;end;
return czy_szablon,obiekt,kod;
end);
elseif(obiekt=="LINKW")then
if(specjalne_modul["CzyLinkWewnętrzny"](szablon))then
ile=ile+1;
return true,obiekt,kod;
end;
elseif(obiekt=="LINKZ")then
ile=ile+1;
return true,obiekt,kod;
end;
end);
----
local czy_linia_uwzgledniana=mw.ustring.match(linia_rozwazana,"^%s*%-%-+(.*)%-%-+%s*$");
local czy_linia=((not czy_linia_uwzgledniana)and(mw.ustring.match(linia_rozwazana,"^%s*[%-%+%=%~]+.*$")
or ((#przedrostek_listy==0)and((mw.ustring.match(linia_rozwazana,"!"))and(mw.ustring.match(linia_rozwazana,"[^!]%s*$"))))
or mw.ustring.match(linia_rozwazana,"^%s*<")) or nil);
----
local nowa_linia=false;
local function WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana)
return function(tabela_rozdzial_artykulow2,numer_podtablicy_w_tablicy,tab_stare)
--if((czy_spis_rzeczy_napis_wprowadzenia_tekstu)and(numer_podtablicy_w_tablicy>2))then return;end;
if((czy_rozdzial_centrowany)and(w_rozdziale)and(czy_linia_uwzgledniana)and(tab_stare[2])and(tab_stare[2][1]))then
tab_stare[2][1]=tab_stare[2][1]+1;
end;
if(not w_rozdziale)then
local function CzyZaliczac()
return ((not mw.ustring.match(linia,"^%w+%p+"))
and mw.ustring.match(linia,"^%s*'*%s*%w+"));
--or mw.ustring.match(linia,"^%s*'*%s*"..szablonowe_modul.NormaWzoruKodowaniaTekstu("LINKZ"));
end;
if(nowa_linia)then
tab_stare[2][4]=true;
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
elseif(((poziom_rozdzialu)or(#(przedrostek_listy or "")>0))and((ile>1)or(CzyZaliczac())))then
nowa_linia=true;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
tabela_artykulow[numer_rozdzialu_w_ksiazce]={};
tabela_rozdzial_artykulow=tabela_artykulow[numer_rozdzialu_w_ksiazce];
----
local rozdzial_na_tekst=p.AnalizaNapisuWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
tabela_rozdzial_artykulow[1]={rozdzial_na_tekst,{-#przedrostek_listy,przedrostek_listy,tekstowy_przedrostek,false,},linia,};
tab_stare[2][4]=true;
tab_stare[6]=(numer_podtablicy_w_tablicy>2) and 0 or nil;
tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy]={};
table.insert(tabela_rozdzial_artykulow[numer_podtablicy_w_tablicy],tab_stare);
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
else
table.insert(tabela_rozdzial_artykulow2[numer_podtablicy_w_tablicy],tab_stare);
end;
end;
end;
local function AnalizaLiniiObiekty(linia_rozwazana)
local tab_linia=LiniaArtykulow(linia_rozwazana);
for k=1,#tab_linia,1 do
local iterator2=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tab_linia[k],nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local tab_nieobslugiwane=nil;
for szablon,obiekt,kod in iterator2 do
local czy_szablon=(obiekt=="SZABLON");local czy_link=((obiekt=="LINKW")or(obiekt=="LINKZ"));
if(czy_szablon or czy_link)then
local przerwij=nil;
if(czy_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)
----
--local przerwij=nil;
local tabela_spisu=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_spisu)then
if(tabela_spisu[1]==true)then
--local tabela_parametrow_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil ,tablica_danych_parametrow_szablonu_strony,kod);
local numer_link=tabela_spisu["numer_link"];
for name,value in pairs(tabela_parametrow_szablonu)do
if(name~=numer_link)then
local kod_w_nie_obslugiwanych=tabela_parametrow_szablonu[name];
local iter=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(kod_w_nie_obslugiwanych,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not tab_nieobslugiwane)then tab_nieobslugiwane={};end;
for szablon,obiekt,kod in iter do
if(not tab_nieobslugiwane[obiekt])then tab_nieobslugiwane[obiekt]={};end;
tab_nieobslugiwane[obiekt][kod]=true;
end;
end;
end;
local tyt=tabela_parametrow_szablonu[numer_link];
przedrostek_listy="";
tekstowy_przedrostek,szablon=mw.ustring.match(tyt,"^'*[^%S\n]*([%d%.]*)[^%S\n]*([^\n]-)'*$");
przerwij=true;
else
przedrostek_listy="";
tekstowy_przedrostek=tabela_parametrow_szablonu[tabela_spisu["numer"]];
szablon=tabela_parametrow_szablonu[tabela_spisu["link"]];
przerwij=true;
end;
end;
end);
end;
--[[if(przerwij)then
local iterator3=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
for szablon2,obiekt2,kod2 in iterator3 do
if(obiekt2=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tablica_modyfikatorow=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon2,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod2);
local tabela_linku=stronicowyparser_obiekty_modul.linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tabela_linku)then
szablon=szablon2;
break;
end;
elseif(obiekt2=="LINKW")then
szablon=szablon2;
break;
end;
end;
end;]]
local pozycja_artykulu=nil;local nazwa=nil;
local tab_pozycja_elementow_w_spisie_rzeczy;local numer_rodzaju_artykulu_poprz;local id;local parametry_szablonu;local kom;
local link_szablon=nil;
local czy_obslugiwane=nil;
local CzyObslugiwane=function()
local wartosc=((tab_nieobslugiwane[obiekt])and(tab_nieobslugiwane[obiekt][kod]));
czy_obslugiwane=wartosc;
return (not wartosc);
end;
if((--[[wliczaj_artykuly_tego_rozdzialu]] true)and(not przerwij)and((not tab_nieobslugiwane)or(CzyObslugiwane())))then
local linia_artykokow=tab_linia[k];
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy(linia,czy_linia_uwzgledniana),tabela_rozdzial_artykulow,tablica_artykulow_zebranych,wliczaj_artykuly_tego_rozdzialu,szablon,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych,--[[]]przedrostek_listy,tekstowy_przedrostek,w_rozdziale,linia_artykokow--[[]]);
--mw.log()
if((not czy_obslugiwane)and(not numer_rodzaju_artykulu_poprz))then
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--mw.logObject(tabela_rozdzial_artykulow)
else
link_szablon=licencja_z_autorem and (czy_artykul_korzystany and mw.ustring.match(szablon,"({{[^{}]+}})") or nil) or nil;
end;
--[[if(przerwij)then break;end;]]
if((not numer_rodzaju_artykulu_poprz)and(not przerwij)and(link_szablon)and((not tab_pozycja_elementow_w_spisie_rzeczy)or(not tab_pozycja_elementow_w_spisie_rzeczy[1]))and(czy_artykul_korzystany)and(licencja_z_autorem))then
---
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu_licencji,nazwa_szablonu_licencji,tabela_modyfikatorow_licencji)
if(stronicowyparser_obiekty_modul.szablony_licencji[nazwa_szablonu_licencji])then
if(tabela_parametrow_szablonu_licencji)then
local autor=tabela_parametrow_szablonu_licencji["Autor"];
local szkoly=tabela_parametrow_szablonu_licencji["Ukończone szkoły"];
local email=tabela_parametrow_szablonu_licencji["Email"];
local dotyczy=tabela_parametrow_szablonu_licencji["Dotyczy"];
local licencjonowanie=tabela_parametrow_szablonu_licencji["Licencjonowanie"];
local umowa_prawna=tabela_parametrow_szablonu_licencji["Umowa prawna"];
local konsekwencje=tabela_parametrow_szablonu_licencji["Konsekwencje"];
local frame=mw.getCurrentFrame();
if(autor~=nil)then
autor=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(autor,nazwa_modulu ,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(szkoly~=nil)then
szkoly=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(szkoly,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(email~=nil)then
email=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(email,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(dotyczy~=nil)then
dotyczy=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(dotyczy,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(licencjonowanie~=nil)then
licencjonowanie=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(licencjonowanie,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(umowa_prawna~=nil)then
umowa_prawna=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(umowa_prawna,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(konsekwencje~=nil)then
konsekwencje=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(konsekwencje,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);}
end;
if(autor~=nil)then
tabela_licencji_spisu_tresci={autor, szkoly, email, dotyczy, licencjonowanie, umowa_prawna, konsekwencje};
licencja_z_autorem=false;
end;
return true;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
end;
if(not czy_linia)then AnalizaLiniiObiekty(linia_rozwazana);end;
end;
end;
numer_rozdzialu_w_ksiazce=numer_rozdzialu_w_ksiazce+1;
end;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
---rozdzial_tab[1]=rozdzial;rozdzial_tab[2]=linia rozdziału
AnalizaRozdzialu(rozdzial_tab[1],rozdzial_tab[2],text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany);
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
AnalizaRozdzialu("Spis treści",nil,tekst_rozwiniety_calego_artykulu,nil,nil,nil,nil);
end;
--mw.logObject(tabela_artykulow);
if(czy_artykul_korzystany)then
return tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci;
else
return tabela_artykulow,nil,przekierowanie_spisu_tresci;
end;
end;
function p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
local parametry_modul=require("Module:Parametry");
if(not parametry_modul.TypeTable(tabela_artykulow))then return;end;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local odczyt_jakie_spisy_tresci=stronicowyparser_obiekty_modul.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu;
local jakie_spisy_tresci=parametry_modul["KopiujTabelęElementów"](odczyt_jakie_spisy_tresci);
setmetatable(jakie_spisy_tresci,parametry_modul.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter);
for _,tab_lista in ipairs(tabela_artykulow)do
if(tab_lista[2])then
for _,artykul_w_bazie_element in ipairs(tab_lista[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(jakie_spisy_tresci[artykul_bez_naglowka_w_bazie])then
return artykul_bez_naglowka_w_bazie;
end;
end;
end;
end;
end;
function p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,__FUNKCJA_SPISU_RZECZY,__FUNKCJA_ZBIERANIA_DANYCH)
local adres_ksiazki_glownego_spisu_tresci=nil;
local techniczne_modul=require("Module:Techniczne");
local nazwy_modul=require("Module:Nazwy");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local ile2,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki,tekst=true,};
if(ile2>0)then
local strona_spisu_tresci=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_spisu_tresci)then
local html_modul=require("Module:Html");
strona_spisu_tresci=html_modul.DecodeHtml(strona_spisu_tresci,true);
local tabela_nazw={};
local nazwa_przestrzeni2=nazwy_modul["NAZWAPRZESTRZENI"](strona_spisu_tresci,tabela_nazw);
local nazwa_przestrzeni_ksiazki2=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
local nazwa_ksiazki2=(nazwa_przestrzeni_ksiazki2=="")
and nazwy_modul["NAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw)
or nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_spisu_tresci,tabela_nazw);
----
if((nazwa_przestrzeni~=nazwa_przestrzeni2)or(nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki2)or(nazwa_ksiazki~=nazwa_ksiazki2))then
if(((nazwa_przestrzeni2==nazwy_np_modul.Main)or(nazwa_przestrzeni2==nazwy_np_modul.Wikijunior))or(((nazwa_przestrzeni2==nazwy_np_modul.Wikibooks)or(nazwa_przestrzeni2==nazwy_np_modul.User))and(nazwa_przestrzeni_ksiazki2~="")))then
----
adres_ksiazki_glownego_spisu_tresci={nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2,};
local wynik=__FUNKCJA_SPISU_RZECZY and __FUNKCJA_SPISU_RZECZY(nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2) or nil;
if((wynik or 0)==1)then
return 1;
end;
----
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki=nazwa_przestrzeni2,nazwa_przestrzeni_ksiazki2,nazwa_ksiazki2;
pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
else
return 2;
end;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
local function Spis(tablista_artykulow,spis_tresci,tab_inne_spisy,nazwa_glownego_spisu,numer)
if((parametry_modul.TypeTable(tablista_artykulow)) and parametry_modul["CzySąElementyTablicy"](tablista_artykulow))then
local czy_spis_tresci_table=parametry_modul.TypeTable(spis_tresci);
local spis_tresci_strona=czy_spis_tresci_table and spis_tresci[1] or spis_tresci;
----
local przekierowanie_strona=czy_spis_tresci_table and spis_tresci[2] or nil;
local tab_element={[1]={((not spis_tresci) and "Główny spis treści" or ("Spis treści - "..spis_tresci_strona)),{((spis_tresci) and 1 or nil),nil,nil,},["spis"]={spis_tresci_strona or nazwa_glownego_spisu or "",numer}},[2]=nil,[3]=nil,};
---
if(not tablista_artykulow[1][1][2][1])then
for numer,tab_lista in ipairs(tablista_artykulow[1])do
if(numer>1)then
tab_element[numer]=tab_lista;
end;
end;
table.remove(tablista_artykulow,1);
end;
---
for _,tab_lista in ipairs(tablista_artykulow)do
local numer_rozdzialu=tab_lista[1][2][1];
local czy_rozdzial_centrowany=tab_lista[1][2][4];
if(numer_rozdzialu>0)then
tab_lista[1][2][1]=numer_rozdzialu+1;
end;
if(czy_rozdzial_centrowany)then break;end;
end;
---
numer=numer+1;
---
--if(not tablista_artykulow)then tablista_artykulow={};end;
----
table.insert(tablista_artykulow,1,tab_element);
if(spis_tresci)then
if(not tab_inne_spisy)then tab_inne_spisy={};end;
table.insert(tab_inne_spisy,spis_tresci);
if(not tablista_artykulow[1][2])then tablista_artykulow[1][2]={};end;
local tab_stare={czy_spis_tresci_table and {spis_tresci_strona,nil,przekierowanie_strona} or spis_tresci,{0,"","",true,},"[[:"..pelna_nazwa_ksiazki.."/" ..spis_tresci_strona.."]]",false,};
table.insert(tablista_artykulow[1][2],1,tab_stare);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer)
--mw.logObject(tablista_artykulow,"TYTAn123fhh");
local tablista_artykulow_iter,tablica_licencji,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,spis_tresci,false,nil,__FUNKCJA_ZBIERANIA_DANYCH);
--mw.logObject(tablista_artykulow_iter,spis_tresci);
----
if((tablista_artykulow_iter)and(parametry_modul.TypeTable(tablista_artykulow_iter)))then
tablista_artykulow_iter,tab_inne_spisy,numer=Spis(tablista_artykulow_iter,(not przekierowanie_spisu_tresci)and spis_tresci or {przekierowanie_spisu_tresci,spis_tresci,},tab_inne_spisy,nil,numer);
for _,value in ipairs(tablista_artykulow_iter)do
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,value);
end;
end;
return tablista_artykulow,tab_inne_spisy,numer;
end;
local function SpisRzeczy(tabela_artykulow,tab_inne_spisy)
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tabela_artykulow)
if(artykul_spisu_rzeczy)then
local numer=1;
tabela_artykulow,tab_inne_spisy,numer=Spis(tabela_artykulow,nil,tab_inne_spisy,"",numer);
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tabela_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
return tabela_artykulow,tab_inne_spisy;
end;
local adres_ustawien=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "").."NawigacjaSpecjalna/Nawigacja/"..pelna_nazwa_ksiazki;
----
adres_ustawien=techniczne_modul.PrzekierowanieDoStrony(adres_ustawien) or adres_ustawien;
----
local tekst=techniczne_modul.WikikodStrony{["przestrzeń"]="",["nazwa"]=adres_ustawien,};
if(not tekst)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji={};
local szablonowe_modul=require("Module:Szablonowe");
local tekst_zakodowany=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,nil,nil);
local stronicowyparser_obiekty_modul=mw.loadData('Module:StronicowyParser/obiekty');
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zakodowany,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji);
local szablon_uklad_autonawigacji;
local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
local tabela_parametrow_szablonu_uklad_autonawigacji;
local nazwa_szablonu_uklad_autonawigacji;
local tabela_modyfikatorow_uklad_autonawigacji;
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,kod,adres_ustawien,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
tabela_parametrow_szablonu_uklad_autonawigacji=tabela_parametrow_szablonu;
nazwa_szablonu_uklad_autonawigacji=nazwa_szablonu;
tabela_modyfikatorow_uklad_autonawigacji=tabela_modyfikatorow;
if(nazwa_szablonu==stronicowyparser_obiekty_modul.uklad_autonawigacji)then
szablon_uklad_autonawigacji=szablon;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
if(not szablon_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
--local tabela_parametrow_szablonu_uklad_autonawigacji,nazwa_szablonu_uklad_autonawigacji,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon_uklad_autonawigacji);
if(not tabela_parametrow_szablonu_uklad_autonawigacji)then
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
local tab_inne_spisy;
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and "" or {przekierowanie_spisu_tresci,"",},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local parametry_modul=require("Module:Parametry");
local automat_manualny=tabela_parametrow_szablonu_uklad_autonawigacji["automat manualny"];
----
local html_modul=require("Module:Html");
----
local czy_automat_manualny=(automat_manualny) and parametry_modul.CzyTak(automat_manualny) or nil;
if(czy_automat_manualny)then
local sub_nazwa_spis_tresci;
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
spis_tresci=spis_tresci and html_modul.DecodeHtml(spis_tresci,true) or nil;
if(parametry_modul.CzyTak(spis_tresci))then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local pelna_nazwa_ksiazki_spisu_tresci=nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci,tabela_nazw);
if(pelna_nazwa_ksiazki_spisu_tresci==pelna_nazwa_ksiazki)then
sub_nazwa_spis_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci,tabela_nazw);
else
sub_nazwa_spis_tresci="";
end;
else
sub_nazwa_spis_tresci="";
end;
local tabela_artykulow,tabela_licencji_spisu_tresci,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,sub_nazwa_spis_tresci,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
tabela_artykulow,tab_inne_spisy=SpisRzeczy(tabela_artykulow,nil);
return tabela_artykulow,tabela_licencji_spisu_tresci,(not przekierowanie_spisu_tresci) and sub_nazwa_spis_tresci or {przekierowanie_spisu_tresci,sub_nazwa_spis_tresci,},tab_inne_spisy,nil,adres_ksiazki_glownego_spisu_tresci;
end;
local frame=mw.getCurrentFrame();
for name,value in pairs(tabela_parametrow_szablonu_uklad_autonawigacji)do
tabela_parametrow_szablonu_uklad_autonawigacji[name]=frame:preprocess{text=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(value,adres_ustawien,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,function(szablon,obiekt,kod)
if(obiekt=="ZMIENNA")then
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)|([^{}]-)}}}","{{(((}}%1{{!}}%2{{)))}}");
szablon,_=mw.ustring.gsub(szablon,"{{{([^|{}]*)}}}","{{(((}}%1{{)))}}");
return szablon;
end;
end),};
end;
local nazwy_modul=require("Module:Nazwy");
local bez_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez spisów treści"];
local czy_bez_spisow_tresci=(bez_spisow_tresci) and parametry_modul.CzyTak(bez_spisow_tresci) or nil;
local bez_analizy_spisow_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["bez analizy spisów treści"];
local czy_bez_analizy_spisow_tresci=(bez_analizy_spisow_tresci) and parametry_modul.CzyTak(bez_analizy_spisow_tresci) or nil;
----
local tab_inne_spisy;local nazwa_glownego_spisu;
local tablista_artykulow;
local licencja;
local numer=1;
----
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
----
local tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;local tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;local przekierowanie_spisu_tresci;
if(not czy_bez_spisow_tresci)then
local spis_tresci_main=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści"];
if(spis_tresci_main)then
spis_tresci_main=html_modul.DecodeHtml(spis_tresci_main,true);
---
spis_tresci_main=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci_main,[2]=pelna_nazwa_ksiazki,};
end;
local tabela_nazw={};
local pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["PEŁNANAZWAKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or pelna_nazwa_ksiazki;
if(pelna_nazwa_ksiazki~=pelna_nazwa_ksiazki_wedlug_glownego_spisu_tresci)then
return 0;
end;
nazwa_glownego_spisu=parametry_modul.CzyTak(spis_tresci_main)
and nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](spis_tresci_main,tabela_nazw)
or "";
else
nazwa_glownego_spisu="";
end;
if((not czy_bez_spisow_tresci)and(not czy_bez_analizy_spisow_tresci))then
tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika,tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika,przekierowanie_spisu_tresci=p.ZbieranieInformacjiWoluminuDanegoSpisuRzeczy(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_glownego_spisu,czy_artykul_korzystany,adres_ksiazki_glownego_spisu_tresci,__FUNKCJA_ZBIERANIA_DANYCH);
if(przekierowanie_spisu_tresci)then
nazwa_glownego_spisu={przekierowanie_spisu_tresci,nazwa_glownego_spisu,};
end;
if((not tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika)or(tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika==0))then
return tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
end;
local IteratorSpisTresci=function()
local liczba=1;
return function()
local spis_tresci=tabela_parametrow_szablonu_uklad_autonawigacji["spis treści "..liczba];
liczba=liczba+1;
return spis_tresci;
end;
end;
local iter=IteratorSpisTresci();
tablista_artykulow=tabela_artykulow_ksiazek_wedlug_strony_glownej_podrecznika;
licencja=tabela_licencji_ksiazek_wedlug_strony_glownej_podrecznika;
tablista_artykulow,tab_inne_spisy,numer=Spis(tablista_artykulow,nil,tab_inne_spisy,nazwa_glownego_spisu,numer);
local artykul_spisu_rzeczy=p.CzyJestStronaInnegoGeneralnegoSpisuRzeczyArtykularnaNaGeneralnymSpiseRzeczyWePodreczniku(tablista_artykulow);
if(artykul_spisu_rzeczy)then
tabela_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,artykul_spisu_rzeczy,numer);
end;
for spis_tresci in iter do
---
if(not parametry_modul.CzyTak(spis_tresci))then return;end;
spis_tresci=html_modul.DecodeHtml(spis_tresci,true);
spis_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=spis_tresci,[2]="",};
---
tablista_artykulow,tab_inne_spisy,numer=InneSpisy(tablista_artykulow,tab_inne_spisy,spis_tresci,numer);
end;
end;
----
local IteratorFun=function()
local liczba=1;
local STRONA=function(liczba)return liczba*2-1;end;
local NAZWA=function(liczba)return liczba*2;end;
return function()
local strona=tabela_parametrow_szablonu_uklad_autonawigacji[STRONA(liczba)];
local nazwa=tabela_parametrow_szablonu_uklad_autonawigacji[NAZWA(liczba)];
liczba=liczba+1;
return strona,nazwa;
end;
end;
local tablica_stron_ksiazki={};
local tablica_stron_inne={};
local iter=IteratorFun();
local ksiazkawe_modul=require("Module:Książkowe");
local pudelko_modul=require("Module:Pudełko");
local wiki_modul=require("Module:Wiki");
local dodatkowe_artykuly=nil;
local tablica_artykulow_zebranych={};
local tab_nazwa_spisow_przekierowaniowych={};
local dodatkowe_artykuly=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne")
local tabela_rozdzial_artykulow=nil;
----
local pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej=(nazwa_przestrzeni and nazwa_przestrzeni_ksiazki and nazwa_ksiazki)
and nazwy_modul["NazwaModułu"](((nazwy_np_modul.Template~=nazwa_przestrzeni) and (nazwa_przestrzeni) or ""),nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"")
or nil;
local pelna_nazwa_spisu_tresci_szablonowa=pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej and (((nazwa_przestrzeni=="")and ":" or "")..pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej)or nil;
----
--local tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji={};
----
for strona,nazwa in iter do
local function ZbieranieDanychStronZAutonawigacji()
if(not parametry_modul.CzyTak(strona))then return;end;
strona=html_modul.DecodeHtml(strona,true);
nazwa=parametry_modul.CzyTak(nazwa) and html_modul.DecodeHtml(nazwa,true) or nil;
if(not dodatkowe_artykuly)then
if((not tablista_artykulow)or(not parametry_modul.TypeTable(tablista_artykulow)))then tablista_artykulow={};end;
table.insert(tablista_artykulow,{[1]={"Dodatkowe artykuły",{1,nil,nil},["dodatkowe"]="tak",},[2]=nil,});
tabela_rozdzial_artykulow=tablista_artykulow[#tablista_artykulow];
end;
---
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_ksiazki,};
local WsadzanieParametryDoTablicy=function(tabela_rozdzial_artykulow,numer_rodzaju_artykulow_w_nie_podreczniku,tab_stare)
if(not dodatkowe_artykuly)then dodatkowe_artykuly={};end;
----
local czy_table_baza_artykulu=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(tab_stare[1]);
local adres=czy_table_baza_artykulu and tab_stare[1][1] or tab_stare[1];
local czy_w_podreczniku=tab_stare[5];
local kod_jezyka_koncowy=czy_table_baza_artykulu and tab_stare[1][5] or nil;
local kod_projektu_koncowy=czy_table_baza_artykulu and tab_stare[1][6] or nil;
----
table.insert(dodatkowe_artykuly,{((adres) and (kod_jezyka_koncowy or kod_projektu_koncowy) and({adres,kod_jezyka_koncowy,kod_projektu_koncowy,}) or adres),nazwa,czy_w_podreczniku,});
----
table.insert(tabela_rozdzial_artykulow[numer_rodzaju_artykulow_w_nie_podreczniku],tab_stare);
end;
local numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy;
numer_rodzaju_artykulu_poprz,tab_pozycja_elementow_w_spisie_rzeczy,tablica_artykulow_zebranych=WstawianieElementowychZarejestrowanychStronDoBazyWoluminu(self,WsadzanieParametryDoTablicy,tabela_rozdzial_artykulow,tablica_artykulow_zebranych,true,{strona,nazwa,},nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"",pelna_nazwa_spisu_tresci_szablonowa,pelna_nazwa_ksiazki,tablica_analizy_obiektow_strony_dany_modul_uklad_autonawigacji,tablica_danych_parametrow_szablonu_strony_uklad_autonawigacji,nil,nil,tab_nazwa_spisow_przekierowaniowych,--[[]]"*","",false,"[[:"..strona..((parametry_modul.CzyTak(nazwa))and("|"..nazwa) or "").."]]");
end;
ZbieranieDanychStronZAutonawigacji();
end;
----
return tablista_artykulow,licencja,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci;
end;
return p;
76u85u50xlczlalv78rtc6en0ogusiv
Moduł:StronicowyParser/AnalizaSpisuRzeczy
828
60192
551780
551775
2026-08-14T12:37:55Z
Persino
2851
551780
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start,liczba_koniec);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start,liczba_koniec);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start,liczba_koniec);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
9vbqx8zbypbs96bdchfu2qm4k2tf64s
551781
551780
2026-08-14T14:09:39Z
Persino
2851
551781
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
while(true)do
local kod;
liczba_start,liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(liczba_start)then
if(not czy_od_tylu)then liczba_wys=liczba_koniec;else liczba_wys=liczba_start;end;
local szablon=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek;
end,
function(naglowek,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start,liczba_koniec);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start,liczba_koniec);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start,liczba_koniec);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
jmcw4a8phtjafng97tuaj0qzingkvrz
551782
551781
2026-08-14T14:15:08Z
Persino
2851
Anulowano wersję [[Special:Diff/551781|551781]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
551782
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start,liczba_koniec);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start,liczba_koniec);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start,liczba_koniec);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
9vbqx8zbypbs96bdchfu2qm4k2tf64s
551783
551782
2026-08-14T14:15:37Z
Persino
2851
551783
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 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=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=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=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=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=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=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=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=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;
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;
36abq9lqfxbey6wnnli10cvxve4l2e1
551784
551783
2026-08-14T14:18:49Z
Persino
2851
551784
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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
while(true)do
local kod;
liczba_start,liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(liczba_start)then
if(not czy_od_tylu)then liczba_wys=liczba_koniec;else liczba_wys=liczba_start;end;
local szablon=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek;
end,
function(naglowek,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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 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=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=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=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=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=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=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=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=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;
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;
m4y1l06508pgz9unjv4rzhe6qvzw940
551785
551784
2026-08-14T14:19:45Z
Persino
2851
551785
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 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=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=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=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=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=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=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=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=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;
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;
36abq9lqfxbey6wnnli10cvxve4l2e1
551786
551785
2026-08-14T14:20:44Z
Persino
2851
551786
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start,liczba_koniec);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start,liczba_koniec);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start,liczba_koniec);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
9vbqx8zbypbs96bdchfu2qm4k2tf64s
551787
551786
2026-08-14T14:23:54Z
Persino
2851
551787
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
28k6zqr26rw91fcu2v6kbbx0iqby1q8
551790
551787
2026-08-14T15:10:56Z
Persino
2851
551790
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
while(true)do
local kod;
liczba_start,liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(liczba_start)then
if(not czy_od_tylu)then liczba_wys=liczba_koniec;else liczba_wys=liczba_start;end;
local szablon=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek;
end,
function(naglowek,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
p2d2hdyuo3pw0lpzkipl2ljhh9n4ex9
551791
551790
2026-08-14T15:25:31Z
Persino
2851
551791
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local kod;local wartosc_przechwycona;
liczba_start,liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(liczba_start)then
if(not czy_od_tylu)then liczba_wys=liczba_koniec;else liczba_wys=liczba_start;end;
local szablon=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek;
end,
function(naglowek,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
7g5rpwfx9k7dvqjm9j4mo5alj4q5dnh
551792
551791
2026-08-14T15:26:29Z
Persino
2851
Anulowano wersję [[Special:Diff/551791|551791]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
551792
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
while(true)do
local kod;
liczba_start,liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(liczba_start)then
if(not czy_od_tylu)then liczba_wys=liczba_koniec;else liczba_wys=liczba_start;end;
local szablon=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("SZABLON");
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="SZABLON";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon;
end,
function(szablon,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek;
end,
function(naglowek,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
p2d2hdyuo3pw0lpzkipl2ljhh9n4ex9
551793
551792
2026-08-14T15:27:50Z
Persino
2851
551793
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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_od;
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,liczba_do,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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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;
28k6zqr26rw91fcu2v6kbbx0iqby1q8
551794
551793
2026-08-14T16:38:59Z
Persino
2851
551794
Scribunto
text/plain
require("strict");
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu("ZNACZNIK");
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
local obiekt="ZNACZNIK";
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
aqlfemoe1jn4btq6nrtgwbs9man9kxl
551795
551794
2026-08-14T16:43:30Z
Persino
2851
551795
Scribunto
text/plain
require("strict");
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
ag0vheqky7wz3n6bdjpnz7nbh0vsabd
551796
551795
2026-08-14T16:53:12Z
Persino
2851
551796
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
2auxvfaogxn4alsrq7023n9g2ajnu8a
551803
551796
2026-08-14T19:11:59Z
Persino
2851
551803
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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;
break;
elseif(czy_okladka)then
tak=true;
break;
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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
0crt86ondafirowehfa4os89jwydqo5
551810
551803
2026-08-14T23:34:31Z
Persino
2851
551810
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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;
break;
elseif(czy_okladka)then
tak=true;
break;
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;
local szablonowe_modul=require("Module:Szablonowe");
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);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
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))
)
)or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
))
)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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
isz8491dyen4c0gnhkz8uo3l41847lc
551811
551810
2026-08-14T23:58:58Z
Persino
2851
551811
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(tekst,wzor,liczba_od,liczba_do,czy_od_tylu,jak)
if(not czy_od_tylu)then
if((liczba_od)and(liczba_do)and(liczba_od>liczba_do))then return;end;
local a,b,c,d,e,f,g,h,i,j,k=mw.ustring.find(tekst,wzor,liczba_od);
if((a)and(b)and(a>b))then return;end;
if((not liczba_do)or(b<=liczba_do))then
return a,b,c,d,e,f,g,h,i,j,k;
end;
return nil;
else
if((liczba_od)and(liczba_do)and(liczba_od<liczba_do))then return;end;
local liczba_start=liczba_do 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(tekst,wzor,liczba_start);
if((a1)and(b1)and(a1>b1))then return;end;
if((not b1)or((b1)and(b1>liczba_od)))then
return a,b,c,d,e,f,g,h,i,j,k;
elseif((b1)and(b1==liczba_od))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_od,liczba_do,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 function RozpatrywanieNapisoweWprowadzeniaTekstu(wzor,__FUNKCJA1,__FUNKCJA2)
local liczba_start;local liczba_koniec;
local liczba_wys=liczba_od;
local spis_naglowka;
local spis_naglowka_stare;
local spis_naglowka_poziom;
while(true)do
local __liczba_start,__liczba_koniec,wartosc_przechwycona=p.SzukanieNaPodstawieWzoru(tekst_rozwiniety_calego_artykulu,wzor,liczba_wys,liczba_do,czy_od_tylu);
if(__liczba_start)then
if(not czy_od_tylu)then liczba_wys=__liczba_koniec;else liczba_wys=__liczba_start;end;
local szablon,wartosc_przechwycona=__FUNKCJA1(wartosc_przechwycona);
local wynik=__FUNKCJA2(szablon,wartosc_przechwycona,function(naglowek,poziom_naglowka)
if(czy_spis_tresci)then
spis_naglowka_stare=naglowek;
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(naglowek,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
if(czy_spis_tresci(spis_naglowka))then
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
else
spis_naglowka=naglowek;
if(poziom_naglowka)then spis_naglowka_poziom=poziom_naglowka;end;
liczba_start,liczba_koniec=__liczba_start,__liczba_koniec;
return false;
end;
return true;
end);
if(not wynik)then
break;
end;
else
break;
end;
end;
if(liczba_start)then
return liczba_start,liczba_koniec,spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom;
end;
end;
local obiekt="SZABLON";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_szablon,liczba_koniec_szablon,spis_naglowka_szablon_stare,spis_naglowka_szablon=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(naglowek,poziom_naglowka);
end;
end;
end;
end);
return wynik;
end);
local obiekt="ZNACZNIK";
local norma_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt);
local liczba_start_znacznik,liczba_koniec_znacznik,spis_naglowka_znacznik_stare,spis_naglowka_znacznik=RozpatrywanieNapisoweWprowadzeniaTekstu(norma_kodowania_szablonu,
function(kod)
kod=kod and tonumber(kod) or nil;
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
return szablon,kod;
end,
function(szablon,kod,__FUNKCJA)
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
return __FUNKCJA(zawartosc,nil);
end;
end;
end;
end);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local wzor_rozdzialu_dodatniego="(=+[^\n]*[^=\n][^\n]*=+)[^%S\n]*";
local liczba_start_dodatni,liczba_koniec_dodatni,spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom=RozpatrywanieNapisoweWprowadzeniaTekstu(wzor_rozdzialu_dodatniego,
function(naglowek)
return naglowek,naglowek;
end,
function(naglowek,_,__FUNKCJA)
local naglowek,poziom_naglowka=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(naglowek);
if(naglowek)then
return __FUNKCJA(naglowek,poziom_naglowka);
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;
local function Parametry(spis_naglowka_stare,spis_naglowka,spis_naglowka_poziom,liczba_start,liczba_koniec)
local spis_naglowka_stare=spis_naglowka_stare or spis_naglowka;
if((not czy_spis_tresci)and(spis_naglowka))then
spis_naglowka=stronicowyparser_spistresci_modul.AnalizaNapisuWprowadzeniaTekstu(spis_naglowka,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
spis_naglowka=parametry_modul["Odstępy"]{[1]=spis_naglowka,[2]="tak",};
end;
return liczba_start,liczba_koniec,spis_naglowka,spis_naglowka_stare,spis_naglowka_poziom;
end;
if((liczba_start_szablon)and(_max_min==liczba_start_szablon))then
return Parametry(spis_naglowka_szablon_stare,spis_naglowka_szablon,nil,liczba_start_szablon,liczba_koniec_szablon);
elseif((liczba_start_znacznik)and(_max_min==liczba_start_znacznik))then
return Parametry(spis_naglowka_znacznik_stare,spis_naglowka_znacznik,nil,liczba_start_znacznik,liczba_koniec_znacznik);
elseif((liczba_start_dodatni)and(_max_min==liczba_start_dodatni))then
return Parametry(spis_naglowka_dodatni_stare,spis_naglowka_dodatni,spis_naglowka_poziom,liczba_start_dodatni,liczba_koniec_dodatni);
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,wzor_linia,liczba_od,liczba_do,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 dlugosc_tekstu_wyszukiwanego=#tekst;
if(not czy_od_tylu)then
if((not liczba_od)or(liczba_od==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,false);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==1))and((not liczba_do)or(liczba_do==dlugosc_tekstu_wyszukiwanego)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,false);
end;
end;
end;
end;
else
if(liczba_od==dlugosc_tekstu_wyszukiwanego)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"\n"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
if(not liczba_start_rozdzial)then
if((not liczba_do)or(liczba_do==1))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*\n",liczba_od,liczba_do,true);
end;
if(not liczba_start_rozdzial)then
if(((not liczba_od)or(liczba_od==dlugosc_tekstu_wyszukiwanego))and((not liczba_do)or(liczba_do==1)))then
liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9=p.SzukanieNaPodstawieWzoru(tekst,"^"..wzor_linia.."[^%S\n]*$",liczba_od,liczba_do,true);
end;
end;
end;
end;
end;
return liczba_start_rozdzial,liczba_koniec_rozdzial,a1,a2,a3,a4,a5,a6,a7,a8,a9;
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;
break;
elseif(czy_okladka)then
tak=true;
break;
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;
local szablonowe_modul=require("Module:Szablonowe");
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);
local czy_pomiedzy_naglowkami=(pomiedzy_naglowkami)and(not mw.ustring.match(pomiedzy_naglowkami,"^%s*$"));
if(czy_pomiedzy_naglowkami
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))
)
)--[[or(
not mw.ustring.match(pomiedzy_naglowkami,szablonowe_modul.NormaWzoruKodowaniaTekstu())
)]])
)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,poziom_naglowka=nil,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,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,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);
--mw.log(tekst,"TYTAN123")
return tekst;
end;
return p;
gb7hh09b90tleh2qvf7f550zvz7mmtz
Wikibooks:Moduły/StronicowyParser/StronaSubst
4
63523
551800
551178
2026-08-14T17:36:41Z
Persino
2851
/* {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} */
551800
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} ==
Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Patrz|Wersja do czytania}} o nazwie równej subnazwie danej ksiązki {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Code|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}.
Gdy dany artykuł, jest nie równy: {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
; Najważniejsze zmienne{{Dk}}
* {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica, która jest wynikiem, jego wartości zwracanej, działania dołączacza modułów: {{Code|mw.loadData("Module:StronicowyParser/informacje")}}, a w nim zmiennej: {{Code|tablica_zebranych_danych_woluminowych}},
* {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} - tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}.
; Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę{{Dk}}
* {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} - jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}.
; Funkcje{{Dk}}
* {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową,
* {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa,
* {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} - ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału.
; Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}{{Dk}}
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} - nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy,
* {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} - nazwa przestrzeni książki, do której należy dana książka,
* {{Code|nazwa_ksiazki}} - {{Patrz|nazwa_ksiazki}} subnazwa książki, do której należą jej artykuły,
* {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - nazwa artykułu danej książki, bez pełnej nazwy książki.
A gdy parametr: {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}}, lub {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona dadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{linkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana.
Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza.
== {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} ==
Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej.
=== Opis funkcji ===
Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}.
Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}).
Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} - zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwaala uruchomić ta funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}},
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst zakodowany całej strony,
* {{Code|spis}} {{Patrz|spis}} - jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} - uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} - gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszzczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić.
Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ma zmienną używaną w funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}.
=== Funkcje lokalne ===
==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ====
Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Powtarzane(rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną.
Przykład użycia:
<syntaxhighlight lang="lua">
local liczba_powtarzanego=Powtarzane(naglowek);
</syntaxhighlight>
==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ====
Funkcja sprawdzająca, czy składowa tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyStronaSubst()...end;
</syntaxhighlight>
Parametry funkcji:
* Brak parametrów.
Przykład analizy funkcji, podając je właściwie ciało:
<syntaxhighlight lang="lua">
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
</syntaxhighlight>
==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ====
Funkcja wyszukuje w zakodowanym tekście szablony: {{LinkPatrz|StronaSubst-Szablon}} i {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|nazwa_modulu_strony}} - jak w: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} - jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|KsiążkaSubst-Szablon}}.
Przykłady wykorzystania:
<syntaxhighlight lang="lua">
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end
);
</syntaxhighlight>
Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ====
Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w tekście rozdziału nie jest podawany adres pełny artykułu, a jeżeli ona nie jest linkiem, to rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''CSS''': {{Code|display:none}}.
Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc i w przypadku szablonu: {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} - jak w: {{LinkPatrz|1-StronaSubst}},
* {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} - nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem,
* {{Code|link}} {{Patrz|link-StronaSubstParametr}} - jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz,
* {{Code|p}} {{Patrz|p-StronaSubstParametr}} - postęp tworzonego nagłówka, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią,
* {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} - jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną jest jak w: {{LinkPatrz|link-StronaSubstParametr}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ====
Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}.
Gdy nie jest włączony parametr sekcji, ale jest właczony paramwetr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np.stronymogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr.
Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}.
Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć tekst rozdział, jego tekst rozdziału, tzn. {{LinkŚródtytuł|StronaSubstParametr}}.
Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}.
Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} - tabela charakteryzujaca dany artykuł, w tym rozdziale.
* {{Code|naglowki}} {{Patrz|naglowki}} - parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki,
* {{Code|sekcje}} {{Patrz|sekcje}} - dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczyje nagłókami, którymi są poszczególne rozdziały na stronie,
* {{Code|postep}} - jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}},
* {{Code|tablica_stron}} {{Patrz|tablica_stron}} - tablica zebranych stron przez tą funkcję przekazazywana i zwracana przez nią iteracyjnie,
* {{Code|wikikod}} {{Patrz|wikikod}} - wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami,
* {{Code|toc_nowe}} {{Patrz|toc_nowe}} - są tutaj liczone pocycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony,
* {{Code|HNumer}} {{Patrz|HNumer}} - funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}},
* {{Code|m_roznica}} {{Patrz|m_roznica}} - jest to poziom liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}},
* {{Code|m_uzyskane}} - jest to poziom tego {{LinkPatrz|m_roznica}} liczony przez: {{LinkPatrz|HNumer}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
... --- ciało przez właściwą pętlą;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
... ---- ciało pętli przez tą funkcję;
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po tej funkcji;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ====
Funkcja liczy poziom rozdziału, który może być różnego typu, np. dodatni normalny, centrowany znacznikowy lub szablonowy, ujemny albo zerowy. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni normalny.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} {{Patrz|tab_lista}} - tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł,
* {{Code|poziom_rozdzial_centrowany}} - poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_dodatni}} - poziom rozdziału dodatniego normalnego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_srednikowy}} - poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział
* {{Code|poziom_rozdzial_zerowy}} - poziom rozdziału zerowego, w którym leży dany rozdzial.
Przykłady użycia:
<syntaxhighlight lang="lua">
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed tą funkcją;
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
... ---- ciało pętli po tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ====
Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim normalnym, a nawet centrowanym znacznikowym lub szablonowym, czy nawet średnikowym, bądź zerowym, względem jego poziomów rozdziałów różnych typów, w którym leży on.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} - poziom rozdziału dodatniego, do której należy artykuł,
* {{Code|tabela_parametrowa_strony}} - jak w: {{LinkPatrz|tabela_parametrowa_strony}},
* {{Code|liczba_poziomu_zerowego_dla_strony}} - poziom zerowy rozdziału zerowego, do ktorej należy artykuł,
* {{Code|liczba_poziomu_srednikowego_dla_strony}} - poziom sredniowy (ujemny ale napisany za pomocą początkowego średnika), do której należy dany artykuł.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
... ---- Dalsza część ciała danego okrążenia pętli;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ====
Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków, czy to zaznaczonych jako linki wewnętrzne, czy zewnętrzne, czy to w postaci linków inteligetnych, ale tylko artykułów liczonego podręcznika, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} {{Patrz|m}} - jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł,
* {{Code|naglowki}} - jak w: {{LinkPatrz|naglowki}},
* {{Code|sekcje}} - jak w: {{LinkPatrz|sekcje}},
* {{Code|HNumer}} - jak w: {{LinkPatrz|HNumer}},
* {{Code|tablica_stron}} - jak w: {{LinkPatrz|tablica_stron}},
* {{Code|wikikod}} - jak w: {{LinkPatrz|wikikod}},
* {{Code|toc_nowe}} - jak w: {{LinkPatrz|toc_nowe}},
Przykłady użycia:
; Pierwszy dla listowania artukułów danego rozdziału
<syntaxhighlight lang="lua">
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
... ---- ciało czści kodu przed;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- dalsza częśc kodu po;
end;
end;
end;
</syntaxhighlight>
; Drugi do listowania artykułów książki
<syntaxhighlight lang="lua">
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed wywołaniem tej funkcji;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po wywołaniu tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ====
Funkcja operująca na parametrach szablonu: {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni ksiązkowej, przy pomocy zmiennych nazw pod warunkiem, gdy mamy argument: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych.
Funkcja korzysta z: {{LinkŚródtytuł|StronaSubstParametr}}, czyli funkcji liczącej element składowy strony zbiorczej (zawartość), dla danego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} - funkcja mówi, że wykorzystujemy artykuł aktualnej książki,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}:
* {{Code|1}} {{Patrz|1-StronaSubst}} - artykuł danej książki, bez pełnej nazwy książki,
* {{Code|link}} {{Patrz|link-StronaSubst}} - gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem,
* {{Code|postep}} {{Patrz|postep-StronaSubst}} - uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp.
Gdy artykuł jest {{LinkPatrz|Wersja do czytania}} lub {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą, a jeżeli została już policzona jego zawartość w postaci aktualnej książki, to funkcja zwraca tą wartość.
Funkcja liczy elementy spisu treści ogólnego spisu treści, jak szablony spisu rzeczy w postaci graficznej: {{s|Spis treści}} i {{s|TOCRamka}}, albo tekstowej: {{s|TOC}}.
Dla parametru: {{LinkPatrz|czy_artykul_aktualny}}, jest prawidziwy, wtedy funkcja zbiera dane w tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
A gdy zmienna: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej podzmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
{{Hr}}
W obu tworzonych tabelach zależy od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}.
==== KsiążkaSubst ====
===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} =====
Funkcja liczy strony zbiorcze dla dla danego rozdziału, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej ksiązki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}.
Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić {{LinkPatrz|wikikod}}.
Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób {{LinkPatrz|wikikod}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} - jak w: {{LinkPatrz|substrona}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}.
===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} =====
Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{LinkPatrz|HNumer}} przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}.
Możliwe jest ze rozdział może składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziom {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{LinkPatrz|HNumer}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr zmienna policzona przez {{LinkPatrz|HNumer}}. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści,strony zbiorczej, czyli: {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, bez artykułów podręcznika, a ostatni rozdział jest ze stronami artykularnymi, przed artykułami, o dowolnej nazwie, wtedy liczymy listę artykułów w danym rozdziale według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}.
Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są rozdziały, a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}.
==== Funkcje analizujące strony zbiorcze lub inne ====
===== {{Śródtytuł|NieFun}}{{Code|NieFun}} =====
Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} - tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}},
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} - nazwa tego szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} - tabela jego modyfikatorów,
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} - czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu.
Parametry funkcji zwracanej:
* {{Code|parametr}} - jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}.
===== {{Śródtytuł|TakFun}}{{Code|TakFun}} =====
Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: {{LinkPatrz|Wersja do czytania}}, lub {{LinkPatrz|Wersja do druku}}.
Definicja pogladowa funkcji:
<syntaxhighlight lang="lua">
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} =====
Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} {{Patrz|substrona}} - nazwa artykułu strony zbiorczej rozdziałowej,
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dq8u5wunh22bw7taqmiq8ak4we1rzfk
551801
551800
2026-08-14T17:38:00Z
Persino
2851
/* {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} */
551801
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} ==
Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Patrz|Wersja do czytania}} o nazwie równej subnazwie danej ksiązki {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Code|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}.
Gdy dany artykuł, jest nie równy: {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
; Najważniejsze zmienne{{Dk}}
* {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica, która jest wynikiem, jego wartości zwracanej, działania dołączacza modułów: {{Code|mw.loadData("Module:StronicowyParser/informacje")}}, a w nim zmiennej: {{Code|tablica_zebranych_danych_woluminowych}},
* {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} - tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}.
; Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę{{Dk}}
* {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} - jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}.
; Funkcje{{Dk}}
* {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową,
* {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa,
* {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} - ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału.
; Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}{{Dk}}
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} - nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy,
* {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} - nazwa przestrzeni książki, do której należy dana książka,
* {{Code|nazwa_ksiazki}} - {{Patrz|nazwa_ksiazki}} subnazwa książki, do której należą jej artykuły,
* {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - nazwa artykułu danej książki, bez pełnej nazwy książki.
A gdy parametr: {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}}, lub {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona dadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{linkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana.
Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza.
== {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} ==
Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej.
=== Opis funkcji ===
Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}.
Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}).
Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} - zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwaala uruchomić ta funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}},
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst zakodowany całej strony,
* {{Code|spis}} {{Patrz|spis}} - jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} - uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} - gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszzczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić.
Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ma zmienną używaną w funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}.
=== Funkcje lokalne ===
==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ====
Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Powtarzane(rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną.
Przykład użycia:
<syntaxhighlight lang="lua">
local liczba_powtarzanego=Powtarzane(naglowek);
</syntaxhighlight>
==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ====
Funkcja sprawdzająca, czy składowa tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyStronaSubst()...end;
</syntaxhighlight>
Parametry funkcji:
* Brak parametrów.
Przykład analizy funkcji, podając je właściwie ciało:
<syntaxhighlight lang="lua">
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
</syntaxhighlight>
==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ====
Funkcja wyszukuje w zakodowanym tekście szablony: {{LinkPatrz|StronaSubst-Szablon}} i {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|nazwa_modulu_strony}} - jak w: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} - jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|KsiążkaSubst-Szablon}}.
Przykłady wykorzystania:
<syntaxhighlight lang="lua">
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end
);
</syntaxhighlight>
Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ====
Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w tekście rozdziału nie jest podawany adres pełny artykułu, a jeżeli ona nie jest linkiem, to rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''CSS''': {{Code|display:none}}.
Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc i w przypadku szablonu: {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} - jak w: {{LinkPatrz|1-StronaSubst}},
* {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} - nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem,
* {{Code|link}} {{Patrz|link-StronaSubstParametr}} - jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz,
* {{Code|p}} {{Patrz|p-StronaSubstParametr}} - postęp tworzonego nagłówka, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią,
* {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} - jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną jest jak w: {{LinkPatrz|link-StronaSubstParametr}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ====
Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}.
Gdy nie jest włączony parametr sekcji, ale jest właczony paramwetr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np.stronymogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr.
Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}.
Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć tekst rozdział, jego tekst rozdziału, tzn. {{LinkŚródtytuł|StronaSubstParametr}}.
Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}.
Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} - tabela charakteryzujaca dany artykuł, w tym rozdziale.
* {{Code|naglowki}} {{Patrz|naglowki}} - parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki,
* {{Code|sekcje}} {{Patrz|sekcje}} - dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczyje nagłókami, którymi są poszczególne rozdziały na stronie,
* {{Code|postep}} - jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}},
* {{Code|tablica_stron}} {{Patrz|tablica_stron}} - tablica zebranych stron przez tą funkcję przekazazywana i zwracana przez nią iteracyjnie,
* {{Code|wikikod}} {{Patrz|wikikod}} - wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami,
* {{Code|toc_nowe}} {{Patrz|toc_nowe}} - są tutaj liczone pocycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony,
* {{Code|HNumer}} {{Patrz|HNumer}} - funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}},
* {{Code|m_roznica}} {{Patrz|m_roznica}} - jest to poziom liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}},
* {{Code|m_uzyskane}} - jest to poziom tego {{LinkPatrz|m_roznica}} liczony przez: {{LinkPatrz|HNumer}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
... --- ciało przez właściwą pętlą;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
... ---- ciało pętli przez tą funkcję;
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po tej funkcji;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ====
Funkcja liczy poziom rozdziału, który może być różnego typu, np. dodatni normalny, centrowany znacznikowy lub szablonowy, ujemny albo zerowy. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni normalny.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} {{Patrz|tab_lista}} - tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł,
* {{Code|poziom_rozdzial_centrowany}} - poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_dodatni}} - poziom rozdziału dodatniego normalnego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_srednikowy}} - poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział
* {{Code|poziom_rozdzial_zerowy}} - poziom rozdziału zerowego, w którym leży dany rozdzial.
Przykłady użycia:
<syntaxhighlight lang="lua">
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed tą funkcją;
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
... ---- ciało pętli po tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ====
Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim normalnym, a nawet centrowanym znacznikowym lub szablonowym, czy nawet średnikowym, bądź zerowym, względem jego poziomów rozdziałów różnych typów, w którym leży on.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} - poziom rozdziału dodatniego, do której należy artykuł,
* {{Code|tabela_parametrowa_strony}} - jak w: {{LinkPatrz|tabela_parametrowa_strony}},
* {{Code|liczba_poziomu_zerowego_dla_strony}} - poziom zerowy rozdziału zerowego, do ktorej należy artykuł,
* {{Code|liczba_poziomu_srednikowego_dla_strony}} - poziom sredniowy (ujemny ale napisany za pomocą początkowego średnika), do której należy dany artykuł.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
... ---- Dalsza część ciała danego okrążenia pętli;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ====
Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków, czy to zaznaczonych jako linki wewnętrzne, czy zewnętrzne, czy to w postaci linków inteligetnych, ale tylko artykułów liczonego podręcznika, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} {{Patrz|m}} - jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł,
* {{Code|naglowki}} - jak w: {{LinkPatrz|naglowki}},
* {{Code|sekcje}} - jak w: {{LinkPatrz|sekcje}},
* {{Code|HNumer}} - jak w: {{LinkPatrz|HNumer}},
* {{Code|tablica_stron}} - jak w: {{LinkPatrz|tablica_stron}},
* {{Code|wikikod}} - jak w: {{LinkPatrz|wikikod}},
* {{Code|toc_nowe}} - jak w: {{LinkPatrz|toc_nowe}},
Przykłady użycia:
; Pierwszy dla listowania artukułów danego rozdziału
<syntaxhighlight lang="lua">
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
... ---- ciało czści kodu przed;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- dalsza częśc kodu po;
end;
end;
end;
</syntaxhighlight>
; Drugi do listowania artykułów książki
<syntaxhighlight lang="lua">
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed wywołaniem tej funkcji;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po wywołaniu tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ====
Funkcja operująca na parametrach szablonu: {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni ksiązkowej, przy pomocy zmiennych nazw pod warunkiem, gdy mamy argument: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych.
Funkcja korzysta z: {{LinkŚródtytuł|StronaSubstParametr}}, czyli funkcji liczącej element składowy strony zbiorczej (zawartość), dla danego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} - funkcja mówi, że wykorzystujemy artykuł aktualnej książki,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}:
* {{Code|1}} {{Patrz|1-StronaSubst}} - artykuł danej książki, bez pełnej nazwy książki,
* {{Code|link}} {{Patrz|link-StronaSubst}} - gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem,
* {{Code|postep}} {{Patrz|postep-StronaSubst}} - uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp.
Gdy artykuł jest {{LinkPatrz|Wersja do czytania}} lub {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą, a jeżeli została już policzona jego zawartość w postaci aktualnej książki, to funkcja zwraca tą wartość.
Funkcja liczy elementy spisu treści ogólnego spisu treści, jak szablony spisu rzeczy w postaci graficznej: {{s|Spis treści}} i {{s|TOCRamka}}, albo tekstowej: {{s|TOC}}.
Dla parametru: {{LinkPatrz|czy_artykul_aktualny}}, jest prawidziwy, wtedy funkcja zbiera dane w tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
A gdy zmienna: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej podzmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
{{Hr}}
W obu tworzonych tabelach zależy od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}.
==== KsiążkaSubst ====
===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} =====
Funkcja liczy strony zbiorcze dla dla danego rozdziału, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej ksiązki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}.
Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić {{LinkPatrz|wikikod}}.
Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób {{LinkPatrz|wikikod}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} - jak w: {{LinkPatrz|substrona}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}.
===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} =====
Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{LinkPatrz|HNumer}} przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}.
Możliwe jest ze rozdział może składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziom {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{LinkPatrz|HNumer}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr zmienna policzona przez {{LinkPatrz|HNumer}}. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści,strony zbiorczej, czyli: {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, bez artykułów podręcznika, a ostatni rozdział jest ze stronami artykularnymi, przed artykułami, o dowolnej nazwie, wtedy liczymy listę artykułów w danym rozdziale według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}.
Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są rozdziały, a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}.
==== Funkcje analizujące strony zbiorcze lub inne ====
===== {{Śródtytuł|NieFun}}{{Code|NieFun}} =====
Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} - tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}},
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} - nazwa tego szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} - tabela jego modyfikatorów,
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} - czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu.
Parametry funkcji zwracanej:
* {{Code|parametr}} - jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}.
===== {{Śródtytuł|TakFun}}{{Code|TakFun}} =====
Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: {{LinkPatrz|Wersja do czytania}}, lub {{LinkPatrz|Wersja do druku}}.
Definicja pogladowa funkcji:
<syntaxhighlight lang="lua">
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} =====
Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} {{Patrz|substrona}} - nazwa artykułu strony zbiorczej rozdziałowej,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
21vu7po1jdvfaed7y1wbk4q7l0ehy6u
551802
551801
2026-08-14T17:39:32Z
Persino
2851
/* {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} */
551802
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/StronaSubst}}|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.AnalizaStronaSubst}}{{Code|p.AnalizaStronaSubst}} ==
Funkcja sprawdzająca, czy dana strona jest strona zbiorczą o nazwie: w wersji do czytania: {{Patrz|Wersja do czytania}} o nazwie równej subnazwie danej ksiązki {{LinkPatrz|nazwa_ksiazki}}, np. nazwa książki: {{lg|Matematyka dla liceum}}, to ta strona jest wtedy: {{lg|Matematyka dla liceum/Matematyka dla liceum}}, lub wersji do druku: {{Code|Wersja do druku}} {{Patrz|Wersja do druku}}, jak: {{lg|Matematyka dla liceum/Wersja do druku}}. Funkcja sprawdza, czy dana strona równa nazwie rozdziału, do której należą jakieś artykuły, jest stroną zbiorczą. Aby dana nazwa artykułu {{LinkPatrz|nazwa_artykulu}} była stroną zbiorczą, to nie może być o nazwie: {{Code|Spis treści}}, {{Code|Spis rzeczy}}, {{Code|Bibliografia}} i {{Code|Licencja}}, czyli taką prawidłową stroną, np. jest: {{lg|Matematyka dla liceum/Zaczynamy}}.
Gdy dany artykuł, jest nie równy: {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}, należy do zbioru normalnych artykułów, to wtedy to nie jest na pewno stroną zbiorczą.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizaStronaSubst(tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,pelnanazwastrony,TakFun-AnalizaStronaSubst,NieFun-AnalizaStronaSubst,FunRozdzial-AnalizaStronaSubst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
; Najważniejsze zmienne{{Dk}}
* {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}} - tablica, która jest wynikiem, jego wartości zwracanej, działania dołączacza modułów: {{Code|mw.loadData("Module:StronicowyParser/informacje")}}, a w nim zmiennej: {{Code|tablica_zebranych_danych_woluminowych}},
* {{Code|tab_lista_artykulow_w_ksiazce_spis}} {{Patrz|tab_lista_artykulow_w_ksiazce_spis}} - tablica rozdziałów i artykułów oraz o nich informacji, różnych spisów treści należącej do danej książki, ta tablica ma ściśle określoną strukturę omówioną w artykule: {{Code|{{lr2|Moduły/StronicowyParser/SpisTreści}}}}.
; Zmienne potrzebne do zmiany nawigacji na inny niż dany artykuł, czy książkę{{Dk}}
* {{Code|pelnanazwastrony}} {{Patrz|pelnanazwastrony}} - jest to nazwa jednostki z przestrzenią nazw, ona jest wykorzystywana w parametrach pudełkowych: {{Code|{{m|Pudełko}}}}, modułu {{Code|{{ld|StronicowyParser|Stronicowego Parsera}}}}.
; Funkcje{{Dk}}
* {{Code|TakFun}} {{Patrz|TakFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona jest stroną zbiorczą, ale zwykle nierozdziałową,
* {{Code|NieFun}} {{Patrz|NieFun-AnalizaStronaSubst}} - ona (musi być zdefiniowana) jest używana, gdy dana strona nie jest stroną zbiorczą, ale jest artykułem spisu, też w wypadku, gdy strona nie ma artykułów spisu, bo nie jest książką, tylko np. stronami w innej przestrzeni, czy niby-przestrzeni, niż książkowa,
* {{Code|FunRozdzial}} {{Patrz|FunRozdzial-AnalizaStronaSubst}} - ona (funkcja opcjonalna, w przeciwnym wypadku jest wykorzystywane: {{LinkPatrz|TakFun-AnalizaStronaSubst}}) jest używana, gdy dana strona jest zbiorczą, ale rozdziałową, równą nazwie rozdziału.
; Zmienne nazw {{Patrz|ZMIENNE_NAZWOWE}}{{Dk}}
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}} - nazwa przestrzeni nazw, do której należy dany artykuł, czy książka, do której on należy,
* {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} - nazwa przestrzeni książki, do której należy dana książka,
* {{Code|nazwa_ksiazki}} - {{Patrz|nazwa_ksiazki}} subnazwa książki, do której należą jej artykuły,
* {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - nazwa artykułu danej książki, bez pełnej nazwy książki.
A gdy parametr: {{LinkPatrz|pelnanazwastrony}}, istnieje {{Patrz|pelnanazwastrony-istnieje}}, lub parametry: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}}, lub {{LinkPatrz|nazwa_artykulu}}, nie istnieją, wtedy są uzyskiwane parametry pudełkowe, co na tej podstawie, gdy pełna nazwa strony: {{LinkPatrz|pelnanazwastrony}}, istnieje {{LinkPatrz|pelnanazwastrony-istnieje}}, lub {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, nie istnieje {{Patrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, to są liczone parametry strony z tego, a jeżeli wtedy strona dadal nie ma artykułów, to funkcja jest zatrzymywana, bo np. to ta nibyże książka nie może mieć strony zbiorczej, przeciwnym wypadku otrzymywane są parametry: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A gdy warunki: {{LinkPatrz|pelnanazwastrony-istnieje}} i {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis-nie-istnieje}}, nie są spełnione, to dane są uzyskiwane bezpośrednio z tabeli: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tzn.: {{LinkPatrz|ZMIENNE_NAZWOWE}}. A jeżeli ten pierwszy warunek nie jest spełniony, to są liczone parametry z: {{linkPatrz|ZMIENNE_NAZWOWE}}, uzyskiwany jest z niego spis rozdziałów i do nich artykułów, w zmiennej {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}}, a jeżeli strona nie może mieć spisu, to funkcja jest zatrzymawana.
Jeżeli spis strony jednak istnieje po policzeniu, lub nie (wtedy to jest parametrem tej funkcji), wtedy funkcja sprawdza, czy nazwa przestrzeni nazw {{LinkPatrz|nazwa_przestrzeni}} jest: {{Np|(main)|link=tak}}, {{Np|Wikijunior|link=tak}}, lub {{Np|Wikibooks|link=tak}} w niby-przestrzeni nazw: {{lr2|Brudnopis}} z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, albo {{Np|User|link=tak}} (ale nie strona główna użytkownka, ale inne strony w tej przestrzeni, co jest policzone z {{LinkPatrz|nazwa_przestrzeni_ksiazki}}). A jeżeli któraś z tych parametrów jest spełnione, wtedy jest sprawdzane, czy artykuł {{LinkPatrz|nazwa_artykulu}}, czy jest artykułem książki, co w przypadku stron zbiorczych rozdziałowych jest anulowany status strony zbiorczej, a w przypadku innym ta strona jest jednak stroną zbiorczą. A w innym wypadku, gdy to nie jest ta rozdziałowa, to jest sprawdzane, czy to jest strona zbiorcza.
== {{Śródtytuł|p.LiczOperacjeStronZbiorczych}}{{Code|p.LiczOperacjeStronZbiorczych}} ==
Tutaj jest zawarty opis tej funkcji i podfunkcji lokalnych dostępne tylko w niej, a nie gdzie indziej.
=== Opis funkcji ===
Gdy strona jest stroną zbiorczą, strona musi być w przestrzeni książkowej, lub gdy parametry pudełkowe: {{Code|{{m|Pudełko}}}}, wskazują na nią, to w przeciwnym wypadku parametry stron zbiorczych nie są liczone i nie są ustawiane, normalnie są liczone, za pomocą wywołań szablonowych: {{Code|{{s|StronaSubst}}}} {{Patrz|StronaSubst-Szablon}} - gdy jest liczony pojedynczy artykuł, {{Code|{{s|KsiążkaSubst}}}} {{Patrz|KsiążkaSubst-Szablon}} - gdy liczymy całą stronę zbiorczą ze wszystkich stron z jakich składa się książka, oprócz artykułów, różnych stron zbiorczych. Ten pierwszy wywołujemy zawsze z parametrami liczonej strony (artykułu książki), a to drugie nie wywołujemy zwykle z parametrami, po prostu wywołanie jest prawie zawsze bezparametrowe. Te szablony umieszczamy na stronie zbiorczej lub symulowanej stronie zbiorczej, za pomocą szablonu {{s|Podręcznik}}, zobacz też zbiór szablonów ustawień {{Code|config}}, tego szablonu, tzn: {{s|Podręcznik/Ustawienia/}} {{Patrz|Podręcznik/Ustawienia/}}, co jest uwarunkowane wewnętrznym kodem w: {{Code|{{ld2|StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}, w funkcji: {{Code|{{sr|#p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}.
Przykład ustawień {{LinkPatrz|Podręcznik/Ustawienia/}} symulowanej strony zbiorczej możemy znaleźć na stronie: {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:StronaSubst/config}}}} (szablonu {{LinkPatrz|StronaSubst-Szablon}}) lub {{Code|{{ls2|Podręcznik/Ustawienia/Szablon:KsiążkaSubst/config}}}} (szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}).
Funkcja wykorzystuje jako podstawę do działania procedurę zwracajace jakieś parametry: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LiczOperacjeStronZbiorczych(glowna_tablica,tekst_rozwiniety_calego_artykulu,spis,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|glowna_tablica}} {{Patrz|glowna_tablica}} - zmienna taka jak: {{Code|self}}, jest to zmienna obiektowa, co ona pozwaala uruchomić ta funkcję bez tego parametru, jeżeli napiszemy wywołanie tej funkcji nie z: {{Code|.}}, tylko z: {{Code|:}},
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst zakodowany całej strony,
* {{Code|spis}} {{Patrz|spis}} - jest to spis rozdziałów i jego artykułów, jest to zmienna, taka jak: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_modulu_strony}} {{Patrz|nazwa_modulu_strony}} - uchwyt bazy danych {{Code|{{m|Szablonowe}}}}, używany zamiast: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} {{Patrz|tablica_obiektow_strony_dany_modul_strony}} - gdy nie podano zmiennej: {{Code|nazwa_modulu_strony}}, wtedy jest używana ta zmienna, jest to zmienna bazy danych, tej samej bazy, co dotyczy: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - zmienna, w której są zawarte rozkładania parametrów tabeli bazy danych: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}}, na czynniki pierwsze, aby znów tego nie robił, gdy pierwszy raz badamy jakiś element jej, to rozłożenie jest umieszzczane w tej właśnie tabeli, a za drugim lub trzecim razem, itd., tego nie robić.
Funkcja ma w swoje definicji bezpośrednio zmienne: {{Code|toc_nowe}} do tworzenia spisu treści, którą zapisujemy pod zmienną {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}} w podtablicy {{Code|TOC_StronaZbiorcza}} {{Patrz|TOC_StronaZbiorcza}}. Również ma zmienną używaną w funkcji: {{LinkŚródtytuł|Powtarzane}}, tzn. {{LinkPatrz|tab_powtarzane}}.
=== Funkcje lokalne ===
==== {{Śródtytuł|Powtarzane}}{{Code|Powtarzane}} ====
Funkcja, którego parametrem jest rozdział. Liczy numer takiego samego rozdziału. Do swojego działania funkcja wykorzystuje tabelę {{Code|tab_powtarzane}} {{Patrz|tab_powtarzane}} zdefiniowanej w funkcji: {{LinkŚródtytuł|p.LiczOperacjeStronZbiorczych}}, aby uzyskać unikalność danego nagłówka, tworząc kolejne pozycje spisu treści na stronie zbiorczej.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Powtarzane(rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - podany rozdzial spisu treści lub podanego rozdzialu w artykułach, w zależności od sytuacji, w której uruchomiono tą zmienną.
Przykład użycia:
<syntaxhighlight lang="lua">
local liczba_powtarzanego=Powtarzane(naglowek);
</syntaxhighlight>
==== {{Śródtytuł|CzyStronaSubst}}{{Code|CzyStronaSubst}} ====
Funkcja sprawdzająca, czy składowa tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a później jego podelement: {{Code|CzyStronaSubst}} {{Patrz|CzyStronaSubst}}, czy istnieje, a jeżeli tak, to ustaw jego wartość na: {{Code|tak}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyStronaSubst()...end;
</syntaxhighlight>
Parametry funkcji:
* Brak parametrów.
Przykład analizy funkcji, podając je właściwie ciało:
<syntaxhighlight lang="lua">
if(not glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"])then
glowna_tablica.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
</syntaxhighlight>
==== {{Śródtytuł|WoluminSubst}}{{Code|WoluminSubst}} ====
Funkcja wyszukuje w zakodowanym tekście szablony: {{LinkPatrz|StronaSubst-Szablon}} i {{LinkPatrz|KsiążkaSubst-Szablon}}, przy pomocy: {{linkPatrz|tablica_obiektow_strony_dany_modul_strony}}, wywołując dla nich odpowiednie funkcje: {{Code|StronaSubst}} {{LinkPatrz|StronaSubst-WoluminSubst}} i {{Code|KsiążkaSubst}} {{LinkPatrz|KsiazkaSubst-WoluminSubst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,StronaSubst,KsiazkaSubst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}},
* {{Code|nazwa_modulu_strony}} - jak w: {{LinkPatrz|nazwa_modulu_strony}},
* {{Code|tablica_obiektow_strony_dany_modul_strony}} - jak w: {{LinkPatrz|tablica_obiektow_strony_dany_modul_strony}},
* {{Code|StronaSubst}} {{Patrz|StronaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|KsiazkaSubst}} {{Patrz|KsiazkaSubst-WoluminSubst}} - funkcja wywoływana, gdy napotkano szablon {{LinkPatrz|KsiążkaSubst-Szablon}}.
Przykłady wykorzystania:
<syntaxhighlight lang="lua">
WoluminSubst(tekst_rozwiniety_calego_artykulu,nazwa_modulu_strony,tablica_obiektow_strony_dany_modul_strony,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
...
p.AnalizaStronaSubst(glowna_tablica.tabela_listy_danych_analizy_ksiazki,spis_artykulow,pelnanazwastrony,TakFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),NieFun(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny),FunRozdzial(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny));
end
);
</syntaxhighlight>
Funkcja wykorzystuje pierwszą funkcję, wywołując inną funkcję: {{LinkŚródtytuł|StronaSubst}}, a druga funkcję: {{LinkŚródtytuł|p.AnalizaStronaSubst}}.
==== {{Śródtytuł|StronaSubstParametr}}{{Code|StronaSubstParametr}} ====
Funkcja liczy łańcuch znakowy odpowiadający pojedynczemu wywołaniu, dotyczący danego rozdziału strony zbiorczej, czyli dla pojedynczego wywołania szablonu: {{LinkPatrz|StronaSubst-Szablon}}, lub dla pojedynczego artykułu z wielu generowanych przez szablon: {{LinkPatrz|KsiążkaSubst-Szablon}}. Szablon tworzy rozdział w postaci linku do artykułu, wtedy w tekście rozdziału nie jest podawany adres pełny artykułu, a jeżeli ona nie jest linkiem, to rozdział jest w postaci tekstu, wtedy w tekście rozdziału jest podawany pełny adres artykułu, a jeżeli, mamy włączony postęp, wtedy to jest ukryte właściwością '''CSS''': {{Code|display:none}}.
Rozdział jest pod elementem {{Tag|div|parametry=style="display:block;" class="rozdział_książki"}}, o odpowiednim poziomie, gdy poziom jest {{Code|nil}}, to wtedy przyjmuje on domyślną wartość {{Code|1}}, tworzonym przez funkcję: {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}. Następnym elementem jest postęp, pod warunkiem, jeżeli ustawiono zmienną: {{Code|postep}}, a dalej w osobnym: {{Tag|div|parametry=class="strona_subst"}}, jest zawartość rozdziału w postaci naszego adresu, lub w postaci wartości pustej, gdy rozdział jest linkiem według ustawień funkcji: {{LinkŚródtytuł|StronaSubst}}, a więc i w przypadku szablonu: {{LinkPatrz|StronaSubst-Szablon}}, gdy ta funkcja została wywołana przez niego.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubstParametr(strona,naglowek_strony,link,p,postep,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|strona}} {{Patrz|strona-StronaSubstParametr}} - jak w: {{LinkPatrz|1-StronaSubst}},
* {{Code|naglowek_strony}} {{Patrz|naglowek_strony-StronaSubstParametr}} - nagłówek strony tworzony z pełnego adresu strony, który jest podstroną wraz z nagłówkiem,
* {{Code|link}} {{Patrz|link-StronaSubstParametr}} - jak w: {{LinkPatrz|link-StronaSubst}}, tylko ta zmienna jest w postaci logicznej, jak ta ostatnia jest niepusta, wtedy ta zmienna odpowiada wartości logicznej prawda, w przeciwnym wypadku mamy fałsz,
* {{Code|p}} {{Patrz|p-StronaSubstParametr}} - postęp tworzonego nagłówka, jeżeli {{Code|p {{=}} nil}}, wtedy domyślny poziom jest 1, ten poziom jest liczba calkowitą dodatnią,
* {{Code|postep}} {{Patrz|postep-StronaSubstParametr}} - jak w: {{LinkPatrz|postep-StronaSubst}}, z wartością logiczną jest jak w: {{LinkPatrz|link-StronaSubstParametr}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
==== {{Śródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}}{{Code|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} ====
Funkcja liczy pojedynczą pozycję dla artykułu, na stronie zbiorczej, przy wywołaniu szablonu {{LinkPatrz|KsiążkaSubst-Szablon}}. Nie liczy tylko strony typu {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}.
Gdy nie jest włączony parametr sekcji, ale jest właczony paramwetr naglówków, to wtedy strona nie uwzględnia, że strony mogą się powtarzać, w przeciwnym wypadku, dalsze repetowane strony są nie uwzględniane, bo np.stronymogą być z nagłówkami w spisie treści, więc w tym przypadku ma sens używać ten parametr.
Gdy na stronie jest włączony parametr sekcji, to dla nazw strony niepowtarzających się, liczy stronę w postaci listy tej samej nazwy strony z jego nagłówkami, tzn. po: {{Code|#}}.
Funkcja wykorzystuje do liczenia pojedynczej pozycji artykularnej, a w przypadku włączonej sekcji, również te z nagłówkiem, aby policzyć tekst rozdział, jego tekst rozdziału, tzn. {{LinkŚródtytuł|StronaSubstParametr}}.
Fukcja do powtarzanych nagłówków na stronie wykorzystuje funkcję: {{LinkŚródtytuł|Powtarzane}}.
Funkcję wywołuje się w pętli aż do granicy dojścia do ostatniego artykułu w książce.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrowa_strony}} {{Patrz|tabela_parametrowa_strony}} - tabela charakteryzujaca dany artykuł, w tym rozdziale.
* {{Code|naglowki}} {{Patrz|naglowki}} - parametr uwzględniający, gdy strony na różnych spisach treści na stronie mogą posiadać sobie nagłówki,
* {{Code|sekcje}} {{Patrz|sekcje}} - dla stron robi stronę zbiorczą z artykułów, w której dla pojedynczego takiego liczyje nagłókami, którymi są poszczególne rozdziały na stronie,
* {{Code|postep}} - jak w: {{LinkPatrz|postep-StronaSubstParametr}}, wykorzystywany przez {{LinkŚródtytuł|StronaSubstParametr}},
* {{Code|tablica_stron}} {{Patrz|tablica_stron}} - tablica zebranych stron przez tą funkcję przekazazywana i zwracana przez nią iteracyjnie,
* {{Code|wikikod}} {{Patrz|wikikod}} - wikikod strony tworzony iteracyjnie dla strony zbiorczej dla poszczególnych artykułów książki, nawet tych z nagłówkami,
* {{Code|toc_nowe}} {{Patrz|toc_nowe}} - są tutaj liczone pocycje w spisie treści rozważanego artykułu, nawet tych z nagłówkami, w odpowiedni sposób, by wszystkie linki w niej szły do tej samej strony,
* {{Code|HNumer}} {{Patrz|HNumer}} - funkcja zwracana przez: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}},
* {{Code|m_roznica}} {{Patrz|m_roznica}} - jest to poziom liczony przez funkcję: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}},
* {{Code|m_uzyskane}} - jest to poziom tego {{LinkPatrz|m_roznica}} liczony przez: {{LinkPatrz|HNumer}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
... --- ciało przez właściwą pętlą;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
... ---- ciało pętli przez tą funkcję;
tablica_stron,wikikod,toc_nowe=ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego(tabela_parametrowa_strony,naglowki,sekcje,postep,tablica_stron,wikikod,toc_nowe,HNumer,m_roznica,m_uzyskane,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po tej funkcji;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstu}}{{Code|PoziomNapisowyWprowadzeniaTekstu}} ====
Funkcja liczy poziom rozdziału, który może być różnego typu, np. dodatni normalny, centrowany znacznikowy lub szablonowy, ujemny albo zerowy. Jeżeli w rozdziale znajduje się artykuł, to jedynie może być to rozdział dodatni niezależnie jaki. Rozdział centrowany jest ważniejszy niż ten dodatni normalny.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstu(tab_lista,licznik_rozdzial_centrowany,licznik_rozdzial_dodatni,licznik_rozdzial_srednikowy,licznik_rozdzial_zerowy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} {{Patrz|tab_lista}} - tabela przedstawiające pozycję rozdziału i i jego artykułów, dla danego rozdziału, do którego należy artykuł,
* {{Code|poziom_rozdzial_centrowany}} - poziom rozdziału dodatniego centrowanego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_dodatni}} - poziom rozdziału dodatniego normalnego, w którym leży dany rozdział,
* {{Code|poziom_rozdzial_srednikowy}} - poziom rozdziału ujemnego średnikowego (zaczynający się od {{Code|;}}), w którym leży dany rozdział
* {{Code|poziom_rozdzial_zerowy}} - poziom rozdziału zerowego, w którym leży dany rozdzial.
Przykłady użycia:
<syntaxhighlight lang="lua">
local poziom_rozdzial_dodatni=0;
local poziom_rozdzial_zerowy=0;
local poziom_rozdzial_centrowany=0;
local poziom_rozdzial_srednikowy=0;
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed tą funkcją;
local m=PoziomNapisowyWprowadzeniaTekstu(tab_lista,poziom_rozdzial_centrowany,poziom_rozdzial_dodatni,poziom_rozdzial_srednikowy,poziom_rozdzial_zerowy);
... ---- ciało pętli po tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}}{{Code|PoziomNapisowyWprowadzeniaTekstuArtykularny}} ====
Funkcja liczy poziom artykułu, w którym on leży, może on leżeć w rozdziale dodatnim normalnym, a nawet centrowanym znacznikowym lub szablonowym, czy nawet średnikowym, bądź zerowym, względem jego poziomów rozdziałów różnych typów, w którym leży on.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} - poziom rozdziału dodatniego, do której należy artykuł,
* {{Code|tabela_parametrowa_strony}} - jak w: {{LinkPatrz|tabela_parametrowa_strony}},
* {{Code|liczba_poziomu_zerowego_dla_strony}} - poziom zerowy rozdziału zerowego, do ktorej należy artykuł,
* {{Code|liczba_poziomu_srednikowego_dla_strony}} - poziom sredniowy (ujemny ale napisany za pomocą początkowego średnika), do której należy dany artykuł.
Przykłady użycia:
<syntaxhighlight lang="lua">
if(tab_lista[2])then
local liczba_poziomu_zerowego_dla_strony=0;
local liczba_poziomu_srednikowego_dla_strony=0;
for _,tabela_parametrowa_strony in ipairs(tab_lista[2])do
local m_roznica=PoziomNapisowyWprowadzeniaTekstuArtykularny(tab_lista,m,tabela_parametrowa_strony,liczba_poziomu_zerowego_dla_strony,liczba_poziomu_srednikowego_dla_strony);
... ---- Dalsza część ciała danego okrążenia pętli;
end;
end;
</syntaxhighlight>
==== {{Śródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}{{Code|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}} ====
Funkcja liczy wszystkie pozycje artykularne, tzn. wszystkich artyków, czy to zaznaczonych jako linki wewnętrzne, czy zewnętrzne, czy to w postaci linków inteligetnych, ale tylko artykułów liczonego podręcznika, dla danego rozdziału, wykorzystuje do tego celu funkcje: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstuArtykularny}} - do liczenia poziomu artykułów, i {{LinkŚródtytuł|ListowanieNapisoweWprowadzeniaTekstuOrazAdresuArtykularnego}} - do listowania pojedynczego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista}} - jak w: {{LinkPatrz|tab_lista}},
* {{Code|m}} {{Patrz|m}} - jest to poziom napisu wprowadzenia tekstu, w którym leży dany artykuł,
* {{Code|naglowki}} - jak w: {{LinkPatrz|naglowki}},
* {{Code|sekcje}} - jak w: {{LinkPatrz|sekcje}},
* {{Code|HNumer}} - jak w: {{LinkPatrz|HNumer}},
* {{Code|tablica_stron}} - jak w: {{LinkPatrz|tablica_stron}},
* {{Code|wikikod}} - jak w: {{LinkPatrz|wikikod}},
* {{Code|toc_nowe}} - jak w: {{LinkPatrz|toc_nowe}},
Przykłady użycia:
; Pierwszy dla listowania artukułów danego rozdziału
<syntaxhighlight lang="lua">
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce)do
local rozdzial=tab_lista[1][1];
if(substrona==rozdzial)then
if(ktore==licznik_numer_tego_samego_rozdzialu)then
... ---- ciało czści kodu przed;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,0,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- dalsza częśc kodu po;
end;
end;
end;
</syntaxhighlight>
; Drugi do listowania artykułów książki
<syntaxhighlight lang="lua">
for _,tab_lista in pairs(tab_lista_artykulow_w_ksiazce)do
... ---- ciało pętli przed wywołaniem tej funkcji;
tablica_stron,wikikod,toc_nowe=ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu(tab_lista,m,naglowki,sekcje,postep,HNumer,tablica_stron,wikikod,toc_nowe,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
... ---- ciało pętli po wywołaniu tej funkcji;
end;
</syntaxhighlight>
==== {{Śródtytuł|StronaSubst}}{{Code|StronaSubst}} ====
Funkcja operująca na parametrach szablonu: {{LinkPatrz|StronaSubst-Szablon}}, na danym artykule, w książce bieżącym lub innym, ale należącym do przestrzeni ksiązkowej, przy pomocy zmiennych nazw pod warunkiem, gdy mamy argument: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywy, wtedy zbieramy parametry różnych książek dla strony zbiorczej ustawionej za pomocą parametrów pudełkowych, w innym przypadku parametry strony zbiorczej należącego do aktualnej książki. Też możemy liczyć parametry stron zbiorczych z poziomu innych stron przy pomocy parametrów pudełkowych.
Funkcja korzysta z: {{LinkŚródtytuł|StronaSubstParametr}}, czyli funkcji liczącej element składowy strony zbiorczej (zawartość), dla danego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function StronaSubst(tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - parametry szablonu: {{LinkPatrz|StronaSubst-Szablon}},
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny}} - funkcja mówi, że wykorzystujemy artykuł aktualnej książki,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Opis parametrów tablicy: {{LinkPatrz|tabela_parametrow_szablonu}}:
* {{Code|1}} {{Patrz|1-StronaSubst}} - artykuł danej książki, bez pełnej nazwy książki,
* {{Code|link}} {{Patrz|link-StronaSubst}} - gdy niepusta, wtedy wyświetlany napis w nagłówku jest linkiem, w przeciwny wypadku zwykłym tekstem,
* {{Code|postep}} {{Patrz|postep-StronaSubst}} - uruchamia postęp zamiast wyświetlania tekstu linku w postaci pełnego adresu strony, ewentualnie z nagłówkiem, kiedy nagłówek nie jest linkiem do artykułu strony, a gdy jest link według {{LinkPatrz|link-StronaSubst}}, to wtedy tylko wyświetli się postęp.
Gdy artykuł jest {{LinkPatrz|Wersja do czytania}} lub {{LinkPatrz|Wersja do druku}}, to wtedy funkcja zwraca wartość pustą, a jeżeli została już policzona jego zawartość w postaci aktualnej książki, to funkcja zwraca tą wartość.
Funkcja liczy elementy spisu treści ogólnego spisu treści, jak szablony spisu rzeczy w postaci graficznej: {{s|Spis treści}} i {{s|TOCRamka}}, albo tekstowej: {{s|TOC}}.
Dla parametru: {{LinkPatrz|czy_artykul_aktualny}}, jest prawidziwy, wtedy funkcja zbiera dane w tabeli: {{LinkPatrz|glowna_tablica}}, a właściwie jej element: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej pod zmienną: {{Code|StronaSubst}} {{Patrz|StronaSubst-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubst"][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
A gdy zmienna: {{LinkPatrz|czy_artykul_aktualny}}, jest fałszywa, wtedy dla: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej podzmienną: {{Code|StronaSubstInne}} {{Patrz|StronaSubstInne-StronaSubst}}, jest tworzona ta podtablica:
<syntaxhighlight lang="lua">
glowna_tablica.tabela_listy_danych_analizy_ksiazki["StronaSubstInne"][nazwa_przestrzeni][nazwa_przestrzeni_ksiazki][nazwa_ksiazki][strona][(czy_link and "tak" or "")]=str;
</syntaxhighlight>
{{Hr}}
W obu tworzonych tabelach zależy od parametru, od wartości zmiennej: {{Code|strona}}, czyli: {{LinkPatrz|1-StronaSubst}}, którą jest nazwą artykułu, a gdy mamy niepustą zmienną: {{LinkPatrz|link-StronaSubst}}, wtedy następna zmienna jest ustawiana na: {{Code|tak}}, w przeciwnym wypadku mamy ciąg pusty, a pod: {{Code|str}}, jest ukryta zawartość szablonu {{LinkPatrz|StronaSubst-Szablon}}.
==== KsiążkaSubst ====
===== {{Śródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}{{Code|AnalizowanieStronyWoluminuWprowadzeniaTekstu}} =====
Funkcja liczy strony zbiorcze dla dla danego rozdziału, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej ksiązki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInneRozdział}} {{Patrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, {{Code|ktore}} {{Patrz|ktore}}, jeżeli tej zmiennej nie podano, to ona domyślnie przyjmuje wartość {{Code|1}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}.
Funkcja liczy numer tego samego rozdziału. Ona wykorzystuje do tego zmienną: {{LinkPatrz|ktore}}, aby policzyć ten ściśle określony rozdział, by zwrócić {{LinkPatrz|wikikod}}.
Dla aktualnego wyszukanego rozdziału zgodnego z nazwą artykułu jako strona zbiorcza, jeżeli taki istnieje, wtedy funkcja wyświetla jakiolwiek wynik, np. też z artykułami, jeżeli w nim istnieją takie. Funkcja wtedy inicjuje zmienną {{LinkPatrz|HNumer}} jako wynik z {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}, następnie listuje wynik przy pomocy: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}, uzyskując w ten sposób {{LinkPatrz|wikikod}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInneRozdział-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całego rozdziału, lub ciąg pusty, jeżeli takiego rozdziału nie znaleziono.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} - jak w: {{LinkPatrz|substrona}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|FunRozdzial}}.
===== {{Śródtytuł|AnalizowanieWoluminu}}{{Code|AnalizowanieWoluminu}} =====
Funkcja liczy strony zbiorcze dla całej ksiązki, oprócz {{LinkPatrz|Wersja do czytania}} i {{LinkPatrz|Wersja do druku}}. Jeżeli już to policzono wcześniej pewne zmienne, to ona zakańcza pracę bez ponownego liczenia. W tym przypadku dla aktualnej książki, gdy nie podano zmiennych pudełkowych, funkcja sprawdza zmienną: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, a w niej {{Code|KsiążkaSubst}} {{Patrz|KsiążkaSubst-AnalizowanieWoluminu}}, a jeżeli taki artykuł istnieje, to program tej funkcji jest zakańczany. Jeżeli nie mamy do czynienia z aktualną ksiązką tylko z inną, lub podano parametry pudełkowe, to funkcja sprawdza też w {{LinkPatrz|tabela_listy_danych_analizy_ksiazki-CzyStronaSubst}}, zmienną: {{Code|KsiążkaSubstInne}} {{Patrz|KsiążkaSubstInne-AnalizowanieWoluminu}}, i w kolejnych jego podtablicach, tzn. utworzonych jako tablica wielowymiarowa kolejno ze zmiennych: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{LinkPatrz|nazwa_ksiazki}}, czy one są nierówne {{Code|nil}}, a jeżeli tak to funkcja zakańcza pracę.
W przeciwnym wypadku funkcja liczy parametry: {{LinkPatrz|naglowki}}, {{LinkPatrz|sekcje}} i {{LinkPatrz|postep-StronaSubstParametr}}, z {{LinkPatrz|tabela_parametrow_szablonu-NieFun}}, oraz inicjowana jest funkcja: {{LinkPatrz|HNumer}} przy pomocy innej: {{Code|{{sr|#p.LiczonyHNumer|p=StronicowyParser/Potrzebne}}}}.
Możliwe jest ze rozdział może składać się z żadnych artykułów, czyli funkcja liczy wszystkie rozdziały będące przed danymi artykułami. Ona liczy ich poziom z: {{LinkŚródtytuł|PoziomNapisowyWprowadzeniaTekstu}}, tzn. {{Code|m}} {{Patrz|m-AnalizowanieWoluminu}}, aby funkcja poszła dalej w pętli, to ona nie może być poziom {{LinkPatrz|m-AnalizowanieWoluminu}} równy zero, rozdział równy pustemu łańcuchowi, {{Code|Spis treści}}, {{Code|Bibliografia}}, {{Code|Zobacz też}}, {{Code|Inne}} i {{Code|Licencja}}, co na podstawie tego jest liczony jego numer poziomu z: {{LinkPatrz|HNumer}}, a następnie rozdział z {{Code|{{sr|#p.NapisWprowadzeniaTekstu|p=StronicowyParser/Rozdziały}}}}, a do niego był wsadzony jako drugi parametr zmienna policzona przez {{LinkPatrz|HNumer}}. Dalej jest wskazywany, które jest powtórzenie danego rozdziału z {{LinkŚródtytuł|Powtarzane}}, co na tej podstawie, licząc od tego pierwszego takiego rozdziału, co ten numer jest wykorzystywany w tablicy liczączej spis treści,strony zbiorczej, czyli: {{LinkPatrz|toc_nowe}}. Co potem po wszystkich rozdziałach, bez artykułów podręcznika, a ostatni rozdział jest ze stronami artykularnymi, przed artykułami, o dowolnej nazwie, wtedy liczymy listę artykułów w danym rozdziale według funkcji: {{LinkŚródtytuł|ListowanieNaPodstawieRodzajuNapisuWProwadzeniaTekstu}}.
Według tej funkcji: cały taki wynik jest otoczony: {{Tag|div|parametry=class="klasa_książki"}}, a w niej są rozdziały, a te rozdziały wraz artykułami są okrążone: {{Tag|div|parametry=class="klasa_naglowka klasa_nagłówka"}}.
Dla aktualnej książki wynik jest zapisywany pod zmienną: {{LinkPatrz|KsiążkaSubst-AnalizowanieWoluminu}}, jeśli nie podano parametrów pudełkowych, w przeciwnym wypadku pod: {{LinkPatrz|KsiążkaSubstInne-AnalizowanieWoluminu}}.
Funkcja zwraca w ten sposób uzyskany wikikod {{LinkPatrz|wikikod}} dla całej książki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
Funkcja jest wykorzystywana w definicji funkcji zwracanej: {{LinkŚródtytuł|TakFun}}.
==== Funkcje analizujące strony zbiorcze lub inne ====
===== {{Śródtytuł|NieFun}}{{Code|NieFun}} =====
Jest to funkcja zwracająca inną funkcję, która to z kolei zwraca zawsze wartość pustą. Funkcja zwracana jest to funkcja: {{LinkPatrz|NieFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Ta funkcja zwracana przez funkcję w nagłówku jest wykorzystywana wtedy, gdy nie mamy do czynienia z żadną stroną zbiorczą, tylko ze zwykłym artykułem.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local NieFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(parametr) return "";end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu-NieFun}} - tabela parametrów szablonu: {{LinkPatrz|KsiążkaSubst-Szablon}},
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu-NieFun}} - nazwa tego szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow-NieFun}} - tabela jego modyfikatorów,
* {{Code|czy_artykul_aktualny}} {{Patrz|czy_artykul_aktualny-NieFun}} - czy dotyczy aktualnej książki, dla danego artykułu, na stronie zbiorczej tego woluminu.
Parametry funkcji zwracanej:
* {{Code|parametr}} - jest to dowolny parametr, w: {{Code|{{ld2|StronicowyParser/StronaSubst}}}}, przyjmuje wartość: {{Code|nil}}.
===== {{Śródtytuł|TakFun}}{{Code|TakFun}} =====
Funkcja zwracająca inną funkcję, której wywołanie jest funkcją z: {{LinkPatrz|TakFun-AnalizaStronaSubst}}, w: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zwraca zawsze wartość odpowiadającą wartości logicznej prawdziwej. Tą funkcją zwracaną przez funkcję w nagłówku mamy do czynienia, gdy mamy do czynienia ze stronami zbiorczymi odpowiadzialnymi za stronę o: {{LinkPatrz|Wersja do czytania}}, lub {{LinkPatrz|Wersja do druku}}.
Definicja pogladowa funkcji:
<syntaxhighlight lang="lua">
local TakFun=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieWoluminu(tab_lista_artykulow_w_ksiazce,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieWoluminu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale nie rozdziałowej, tzn. te jednostki, które nie są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
===== {{Śródtytuł|FunRozdzial}}{{Code|FunRozdzial}} =====
Funkcja zwraca inna funkcję, która jest tym: {{LinkPatrz|FunRozdzial-AnalizaStronaSubst}}, z: {{LinkŚródtytuł|p.AnalizaStronaSubst}}. Funkcja zwracana zawsze zwraca wartość odpowiadająca wartości logicznej prawdziwej. Tą funkcję zwracaną przez funkcję w nagłówku używaną, gdy mamy do czynienia, ze stronami zbiorczymi odpowiadzialnymi za rozdziały, która zbiera artykuły danego rozdziału.
Definicja poglądowa funkcji:
<syntaxhighlight lang="lua">
local FunRozdzial=function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,czy_artykul_aktualny)
return function(tab_lista_artykulow_w_ksiazce,substrona,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
AnalizowanieStronyWoluminuWprowadzeniaTekstu(tab_lista_artykulow_w_ksiazce,substrona,tabela_parametrow_szablonu,czy_artykul_aktualny,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return "tak";
end;
end;
</syntaxhighlight>
Funkcja wywołuje funkcję: {{LinkŚródtytuł|AnalizowanieStronyWoluminuWprowadzeniaTekstu}}, do analizy woluminu, pojedynczego na stronie zbiorczej, ale rozdziałowej, tzn. te jednostki, które są zbiorczym obiektem dla stron danego rozdziału.
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu-NieFun}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu-NieFun}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow-NieFun}},
* {{Code|czy_artykul_aktualny}} - jak w: {{LinkPatrz|czy_artykul_aktualny-NieFun}}.
Parametry funkcji zwracanej:
* {{Code|tab_lista_artykulow_w_ksiazce}} - jak w: {{LinkPatrz|tab_lista_artykulow_w_ksiazce_spis}},
* {{Code|substrona}} {{Patrz|substrona}} - nazwa artykułu strony zbiorczej rozdziałowej,
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}}, {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
k6parsea9d8uqjvo4n53wsbjtwgx9dn
Wikipedysta:Persino/brudnopis12
2
63880
551788
551491
2026-08-14T14:28:28Z
Persino
2851
551788
wikitext
text/x-wiki
{{PobierzNumerArtykułu|Writer|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=OpenOffice.org/Writer}}
50vkchlkp2vm0fajc7gobf6fa2g9mog
551789
551788
2026-08-14T14:29:20Z
Persino
2851
551789
wikitext
text/x-wiki
{{PobierzNumerArtykułu|Zarządzanie_systemem,_pakietami,_instalacja_programów|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Aptosid_-_czyli_Debian_sid_krok_po_kroku_dla_każdego/Zarządzanie_systemem,_pakietami,_instalacja_programów}}
n746couemo3jlwztuj15rv9dz9u7123
551809
551789
2026-08-14T23:04:16Z
Persino
2851
551809
wikitext
text/x-wiki
{{PobierzNumerArtykułu|Antroponim|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Podział}}
pvgo9bxcjpvw2p7xhchkjwcyga6lxq6
551814
551809
2026-08-15T02:14:58Z
Persino
2851
551814
wikitext
text/x-wiki
{{PobierzNumerArtykułu|Antroponim1|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Podział}}
99niwwfx9ug0c76rg49fwwevzy0m479
551816
551814
2026-08-15T02:32:55Z
Persino
2851
551816
wikitext
text/x-wiki
{{PobierzNumerArtykułu|Bionim|dane=3|który=1|poziomowo=tak|nagłówek=tak|bez automatu=|nazwa przestrzeni nazw=(main)|nazwa jednostki=Onomastyka/Podział}}
diftb63k8d7pjhtly8hb6cvcnpym09o
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV
4
63919
551778
551777
2026-08-14T12:06:32Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
551778
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}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo, szablony do centrowania.
* Rozdziały równaniowe, to są rozdziały otoczone wokuł stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znaczniowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicjaa skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie.
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}}
* {{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}},
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jsy48xbxfwn48xosvuda4tau2q4wc6q
551779
551778
2026-08-14T12:10:08Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
551779
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}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo, szablony do centrowania.
* Rozdziały równaniowe, to są rozdziały otoczone wokuł stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicjaa skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie.
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}}
* {{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}},
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
a55w3vzkc2birrgphqo5b58kjtmzvmz
551804
551779
2026-08-14T19:54:35Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
551804
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}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo, szablony do centrowania.
* Rozdziały równaniowe, to są rozdziały otoczone wokuł stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicjaa skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie.
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawwdza, czy nagłówek spisu spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z innego nagłówka, z przechwyconego z elementu, w którym jest właśnie to,
* {{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}},
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2yz8ct3bstwj0d58ikcy4iar6qd7qme
551805
551804
2026-08-14T19:55:52Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
551805
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}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo, szablony do centrowania.
* Rozdziały równaniowe, to są rozdziały otoczone wokuł stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicjaa skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie.
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z innego nagłówka, z przechwyconego z elementu, w którym jest właśnie to,
* {{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}},
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4td1j0o8sp494pl6em8r4ebq3kr58hv
551806
551805
2026-08-14T19:56:37Z
Persino
2851
/* {{Śródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}}{{Code|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie}} */
551806
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}} ==
Funkcja wyszukuje w: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, najbliższy rozdział do przodu lub od tyłu w zależności od podanego parametru: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, w zakresach od: {{Code|liczba_od}} {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, do: {{Code|liczba_do}} {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Funkcja znajdująca uwzględnia, że tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, może być zakodowany w bazie kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, a części jego bazy mogą być w postaci przeanalizowanej w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
Funkcja wyszukuje rozdziały dodatnie równaniowe albo centrowane szablonowo lub znacznikowo, szablony do centrowania.
* Rozdziały równaniowe, to są rozdziały otoczone wokuł stron linii tekstu znakami {{Code|{{=}}}}, przykład: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}},
* Centrowane szablonowo, oznaczone są szablonami: {{s|Ce}}, {{s|Centruj}} i {{s|Center}},
* Centrowane znacznikowo, oznaczone są znacznikami: {{Tag|center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie(tekst_rozwiniety_calego_artykulu,liczba_od,liczba_do,czy_od_tylu,czy_spis_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Definicjaa skrótowa funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - tekst artykułu zakodowanego, w którym wyszukuje się rozdziały dodatnie.
* {{Code|liczba_od}} - jak w: {{LinkPatrz|liczba_od|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|liczba_do}} - jak w: {{LinkPatrz|liczba_do|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_od_tylu}} - jak w: {{LinkPatrz|czy_od_tylu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}},
* {{Code|czy_spis_tresci}} {{Patrz|czy_spis_tresci}} - funkcja sprawdza, czy nagłówek spisu, jeśli istnieje, spełnia ściśle określone kryteria, jest to policzony nagłówek z funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}, z innego nagłówka, z przechwyconego z elementu, w którym jest właśnie to,
* {{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}},
== {{Śródtytuł|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}}{{Code|p.SzukaniePierwszegoLinkuNapisuNiestandardowegoWprowadzeniaTekstu}} ==
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9u9sa1v4cjn2hdqu3f4xhsb7atmmh3h
Śpiewnik/Me lube dziewczę
0
63943
551807
2026-08-14T21:53:04Z
Ashaio
4702
nowa piosenka
551807
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Muzyka ==
'''Autor:''' nieznany
'''Opracowanie:''' Leon Kociałkowski
<score raw="1" vorbis="1">
\version "2.19.0"
\header {
title = "Me lube dziewczę, chciej wierzyć mi"
poet = "Słowa: autor nieznany"
composer = "Muzyka: autor nieznany"
arranger = "Opracowanie: Leon Kociałkowski"
tagline = ""
}
\score {
<<
\new Staff \with { midiInstrument = "fiddle" } \relative c'{
\clef treble
\key f \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
c4 f g |
a2 f4 |
c' bes a |
g2 r4 |
g4 g a |
bes2 g4 |
d'4 c4. b8 |
c2 r4 |
c,4\turn f g |
a2 f4 |
c'4 bes a |
g2 r4 |
d'4 g, a |
c2 bes4 |
c,4 a4. g8 |
f2 r4 \bar "|."
}
\addlyrics{ \small {
Me lu -- be dzie -- wczę, chciej wie -- rzyć mi,
mi -- ło -- ści pio -- snkę za -- nu -- cę ci;
tyś szczę -- ścia me -- go je -- dy -- ny zdrój,
tyś pa -- ni mo -- ja, jam słu -- ga twój!
} }
>>
\midi{}
\layout{}
}
</score>
'''Źródło:''' Leon Kociałkowki, ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=16 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 3]''. Poznań, 1885. S. 16–17.
== Tekst ==
'''Autor:''' nieznany
'''Opracowanie''': Leon Kociałkowski
{{Kolumny|2|
<poem>
1. Me lube dziewczę, chciej wierzyć mi,
Miłosną piosnkę zanucę ci;
Tyś szczcęścia mego jedyny zdrój,
Tyś pani moja – jam sługa twój.
2. Me lube dziewczę, wierzaj w tę moc,
Gdzie ócz twych nie ma, tam dla mnie noc;
A z ust twych płynie słodyczy zdrój;
Tyś pani moja – jam sługa twój.
3. O lube dziewczę, wiedz, tyś mój raj,
Za nic bez ciebie wiosna i gaj;
Bo nic nad piękność wdziękow twych zdrój,
Tyś pani moja – jam sługa twój.
4. Lecz lube dziewczę, zawsze się strzeż,
Ni śpiewakowi, ni piosnce wierz!
Bo tym śpiewakiem, jak stoję żyw,
Jest herszt opryszków, to jego śpiew!
5. Me lube dziewczę, wierzaj mi, iż
Tyś jedna w stanie wywołać dziś
Z twardego serca miłości zdrój;
Tyś pani moja, jam sługa twój!
6. O lube dziewczę, przed mną nie stroń,
Choć krwią zbroczona jest moja skroń!
Choć z mych uścisków wytryska krew,
Tyś moja pani, dla cię mój śpiew!
7. O lube dziewczę, choć z dala stój,
Przy tobie mięknie rzeź, mord i bój,
A kiedy ujrzysz wśród borów grób:
Wiedz, że twój sługa śpi u tych stóp!
</poem>
}}
'''Źródło:''' Leon Kociałkowki, ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=16 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 3]''. Poznań, 1885. S. 17–18.
== Zobacz też ==
{{Wikisource|Me_lube_dziewczę,_chciej_wierzyć_mi|Me lube dziewczę, chciej wierzyć mi}}
* ''[https://staremelodie.pl/piosenka/3854/Me_lube_dziewcze Me lube dziewczę]'' w serwisie ''[https://staremelodie.pl/ Stare Melodie]''
ldcwa55u7ouvuzf80xnc1bfneaq766v
551808
551807
2026-08-14T22:06:47Z
Ashaio
4702
poprawka w przedostatnim takcie, literówka w tekście
551808
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Muzyka ==
'''Autor:''' nieznany
'''Opracowanie:''' Leon Kociałkowski
<score raw="1" vorbis="1">
\version "2.19.0"
\header {
title = "Me lube dziewczę, chciej wierzyć mi"
poet = "Słowa: autor nieznany"
composer = "Muzyka: autor nieznany"
arranger = "Opracowanie: Leon Kociałkowski"
tagline = ""
}
\score {
<<
\new Staff \with { midiInstrument = "fiddle" } \relative c'{
\clef treble
\key f \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
c4 f g |
a2 f4 |
c' bes a |
g2 r4 |
g4 g a |
bes2 g4 |
d'4 c4. b8 |
c2 r4 |
c,4\turn f g |
a2 f4 |
c'4 bes a |
g2 r4 |
d'4 g, a |
c2 bes4 |
c,4 a'4. g8 |
f2 r4 \bar "|."
}
\addlyrics{ \small {
Me lu -- be dzie -- wczę, chciej wie -- rzyć mi,
mi -- ło -- ści pio -- snkę za -- nu -- cę ci;
tyś szczę -- ścia me -- go je -- dy -- ny zdrój,
tyś pa -- ni mo -- ja, jam słu -- ga twój!
} }
>>
\midi{}
\layout{}
}
</score>
'''Źródło:''' Leon Kociałkowki, ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=16 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 3]''. Poznań, 1885. S. 16–17.
== Tekst ==
'''Autor:''' nieznany
'''Opracowanie''': Leon Kociałkowski
{{Kolumny|2|
<poem>
1. Me lube dziewczę, chciej wierzyć mi,
Miłosną piosnkę zanucę ci;
Tyś szczęścia mego jedyny zdrój,
Tyś pani moja – jam sługa twój.
2. Me lube dziewczę, wierzaj w tę moc,
Gdzie ócz twych nie ma, tam dla mnie noc;
A z ust twych płynie słodyczy zdrój;
Tyś pani moja – jam sługa twój.
3. O lube dziewczę, wiedz, tyś mój raj,
Za nic bez ciebie wiosna i gaj;
Bo nic nad piękność wdziękow twych zdrój,
Tyś pani moja – jam sługa twój.
4. Lecz lube dziewczę, zawsze się strzeż,
Ni śpiewakowi, ni piosnce wierz!
Bo tym śpiewakiem, jak stoję żyw,
Jest herszt opryszków, to jego śpiew!
5. Me lube dziewczę, wierzaj mi, iż
Tyś jedna w stanie wywołać dziś
Z twardego serca miłości zdrój;
Tyś pani moja, jam sługa twój!
6. O lube dziewczę, przed mną nie stroń,
Choć krwią zbroczona jest moja skroń!
Choć z mych uścisków wytryska krew,
Tyś moja pani, dla cię mój śpiew!
7. O lube dziewczę, choć z dala stój,
Przy tobie mięknie rzeź, mord i bój,
A kiedy ujrzysz wśród borów grób:
Wiedz, że twój sługa śpi u tych stóp!
</poem>
}}
'''Źródło:''' Leon Kociałkowki, ''[https://polona.pl/item-view/a88f7ab4-6c86-43d9-af42-24042b773dcf?page=16 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 3]''. Poznań, 1885. S. 17–18.
== Zobacz też ==
{{Wikisource|Me_lube_dziewczę,_chciej_wierzyć_mi|Me lube dziewczę, chciej wierzyć mi}}
* ''[https://staremelodie.pl/piosenka/3854/Me_lube_dziewcze Me lube dziewczę]'' w serwisie ''[https://staremelodie.pl/ Stare Melodie]''
cw3ov7yj5a4jbps7rborny3jxys0zup
Śpiewnik/W morzu przegląda się gwiazda srebrzysta
0
63944
551819
2026-08-15T07:37:19Z
Ashaio
4702
nowa piosenka
551819
wikitext
text/x-wiki
{{T|Śpiewnik/NawigacjaOpis}}
== Opis ==
''Barcarola'', neapolitańska pieśń żeglarska.
We współczesnych śpiewnikach w refrenie występuje ''Santa Lucia''; w polskich śpiewnikach z XIX i początku XX wieku – ''święta Łucya'', ''święta Łucyja'' lub ''święta Łucja'' (dla zachowania rytmu, imię należy śpiewać jako trzy sylaby: ''Łu-cy-ja'' / ''Lu-ci-a'').
== Muzyka ==
'''Autor:''' Gaetano Braga / ludowa melodia włoska
'''Opracowanie:''' Leon Kociałkowski (1850–1923)
<score raw="1" vorbis="1" >
\version "2.19.82"
\header{
title = "Santa Lucia"
poet = "Słowa: autor nieznany"
composer = "Muzyka: Gaetano Braga / ludowa pieśń włoska"
arranger = "Opracowanie: Leon Kociałkowski"
tagline = ""
}
melodia =
\new Staff \with { midiInstrument = "fiddle" }
\relative f'{
\clef treble
\key bes \major
\time 3/4
\tempo 4 = 120
\autoBeamOff
f4 f4. bes8 |
bes a a4 r |
es4 es4. g8 |
g[( f]) f4 r |
d4 g f |
f8[ e] es4 r |
es4 d c |
g' f r \bar "||"
\repeat volta 2 {
d'4 c bes |
bes8[( a]) c4 r |
c4 bes g |
e8[( f]) bes4 r|
d8[( bes]) bes[( f]) f[( d]) |
es8[( c']) c4 r |
}
\alternative {
{ c4 g4. a8 | c4 bes r | }
{ c4 d4. c8 | c4 bes r \bar "|." }
}
}
\addlyrics{ \small {
W_mo -- rzu prze -- glą -- da się gwia -- zda sre -- brzy -- sta,
Jak lu -- stro gła -- dka toń prze -- zro -- czy -- sta.
Płyń bar -- ko mo -- ja, po -- go -- da sprzy -- ja,
Niech cię pro -- wa -- dzi świę -- ta Łu -- cy -- ja.
świę -- ta Łu -- cy -- ja.
} }
\score{
\melodia
\layout{}
}
\score{
\unfoldRepeats
\melodia
\midi{}
}
</score>
'''Źródło:''' Leon Kociałkowski, ''[https://polona.pl/item-view/f0617b6d-95d2-4168-8070-e9727753074d?page=114 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 4]''. Poznań, 1885. S. 115–116.
== Tekst ==
'''Autor:''' nieznany
'''Tłumacz:''' Jan Chęciński (1826–1874)
{{Kolumny|2|
<poem>
1. W morzu przegląda się gwiazda srebrzysta,
Jak lustro gładka toń przezroczysta,
Płyń barko moja, pogoda sprzyja,
Niech cię prowadzi święta Łucya.
2. Burza w noc cichą gdy nie zagraża,
Wolniej oddycha pierś marynarza:
Z wesołą piosnką skały omija,
Bo go prowadzi święta Łucya.
3. O Neapolu, prześliczny kraju!
Kto cię nie widział, nie poznał raju.
Jako dziewica świeża, radosna,
Tak się uśmiecha wieczysta wiosna.
4. Czego się spieszysz w noc cichą, jasną?
Gwiazdy ukażą brzeg, nim zagasną,
Natura swoje wdzięki rozwija,
Żeglarzy wspiera święta Łucya!
</poem>
}}
'''Źródło:''' Leon Kociałkowski, ''[https://polona.pl/item-view/f0617b6d-95d2-4168-8070-e9727753074d?page=114 Lutnia polska : zbiór pieśni i piosenek obyczajowych i okolicznościowych : miłosnych, aryi i dumek, piosenek wiejskich : mazurów, krakowiaków, kujawiaków, obertasów, piosenek dla rzemieślników, weselnych : i różnej innej treści z melodyami. Tomik 4]''. Poznań, 1885. S. 116–117.
== Zobacz też ==
{{Wikiźródła|W_morzu_przegląda_się_gwiazda_srebrzysta|W morzu przegląda się gwiazda srebrzysta}}
* ''[https://bibliotekapiosenki.pl/utwory/Swieta_Lucja_spiewka_neapolitanska Święta Łucja śpiewka neapolitańska]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
* ''[https://bibliotekapiosenki.pl/utwory/W_morzu_przeglada_sie W morzu przegląda się]'' w serwisie ''[https://bibliotekapiosenki.pl/ Cyfrowa Biblioteka Polskiej Piosenki]''
* ''[https://staremelodie.pl/piosenka/2148/W_morzu_przeglada_sie W morzu przegląda się]'' w serwisie ''[https://staremelodie.pl/ Stare Melodie]''
9cakj2hav74uor3ar4icu5aztigurhb