Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.6
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
Kategoria:Artykuły podejrzane o naruszenie praw autorskich
14
1578
546436
524180
2026-06-11T17:16:29Z
Persino
2851
546436
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=NPA|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}} w nibyprzestrzeni użytkownika|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{s|NPA}} lub {{s|NPAfrgm}} albo przez bota {{s|NPA całość}}. W tej kategorii znajdują się te {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}}, których tekst znajduje się w Internecie i mógł zostać umieszczony w {{NAZWASERWISU}} bez zgody autora.
== Szablon {{s|NPA}} - ilustracja wywołania ==
A oto przykłady ilustrujące zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* Pierwsze wywołanie: '''{{Code|{{s|1=NPA|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|pierwsze}} i drugie: '''{{Code|{{s|1=NPA|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|drugie}}.
* Trzecie wywołanie: '''{{Code|{{s|1=NPA|2=fragment|3=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|trzecie}} i czwarte: '''{{Code|{{s|1=NPA|2=fragment|3=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|czwarte}}.
* Piąte wywołanie: '''{{Code|{{s|1=NPAfrgm|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|piąte}} i szóste: '''{{Code|{{s|1=NPAfrgm|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' {{Patrz|szóste}}.
* A oto opis zmiennych:
** '''adres''', chodzi tutaj o adres strony, skąd pochodzi tekst umieszczony na {{NAZWASERWISU}}.
** Gdy nie podano zmiennej '''adres''', wtedy:
*** jeżeli zmienna '''1''' nie jest '''fragment''', to '''1''' - źródło, z którego pochodzi NPA.
*** jeżeli zmienna '''1''' jest '''fragment''', to '''2''' - tutaj wpisujemy źródło, z którego pochodzi NPA.
* Szablon umieszcza artykuł, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis =
* Przykład ilustrujący wywołanie szablonu: {{LinkPatrz|pierwsze}} i {{LinkPatrz|drugie}}, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
* Przykład ilustrujący wywołanie szablonu: {{LinkPatrz|trzecie}} i {{LinkPatrz|czwarte}}, a nawet {{LinkPatrz|piąte}} i {{LinkPatrz|szóste}}, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|fragment|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
}}
== Szablon {{s|NPA całość}} - ilustracja wywołania ==
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|NPA całość|bot{{=}}NPAbot|url{{=}}<nowiki>http://www.adres.strony.pl</nowiki>|opiekun{{=}}NPAUser}}
** Parametry:
*** bot - nazwa bota,
*** url - adres strony, skąd przekopiowano tekst,
*** opiekun - opiekun bota.
** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}}, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis=
* Gdy szablon {{s|NPA całość}} wstawiono na stronę {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA całość|bot=NPAbot|url=http://www.adres.strony.pl|opiekun=NPAUser|typ jednostki={{{klucz|}}}}}}}
}}
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
5juj79jd8c7h0lkym35t6d1w75z79zq
546437
546436
2026-06-11T17:22:58Z
Persino
2851
546437
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=NPA|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}} w nibyprzestrzeni użytkownika|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{s|NPA}} lub {{s|NPAfrgm}} albo przez bota {{s|NPA całość}}. W tej kategorii znajdują się te {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}}, których tekst znajduje się w Internecie i mógł zostać umieszczony w {{NAZWASERWISU}} bez zgody autora.
== Szablon {{s|NPA}} - ilustracja wywołania ==
A oto przykłady ilustrujące zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* Pierwsze wywołanie: '''{{Code|{{s|1=NPA|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i drugie: '''{{Code|{{s|1=NPA|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* Trzecie wywołanie: '''{{Code|{{s|1=NPA|2=fragment|3=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i czwarte: '''{{Code|{{s|1=NPA|2=fragment|3=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* Piąte wywołanie: '''{{Code|{{s|1=NPAfrgm|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i szóste: '''{{Code|{{s|1=NPAfrgm|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* A oto opis zmiennych:
** '''adres''', chodzi tutaj o adres strony, skąd pochodzi tekst umieszczony na {{NAZWASERWISU}}.
** Gdy nie podano zmiennej '''adres''', wtedy:
*** jeżeli zmienna '''1''' nie jest '''fragment''', to '''1''' - źródło, z którego pochodzi NPA.
*** jeżeli zmienna '''1''' jest '''fragment''', to '''2''' - tutaj wpisujemy źródło, z którego pochodzi NPA.
* Szablon umieszcza artykuł, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis =
* Przykład ilustrujący wywołanie szablonu: pierwsze i drugie, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
* Przykład ilustrujący wywołanie szablonu: trzecie i czwarte, a nawet: piąte i szóste, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|fragment|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
}}
== Szablon {{s|NPA całość}} - ilustracja wywołania ==
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|NPA całość|bot{{=}}NPAbot|url{{=}}<nowiki>http://www.adres.strony.pl</nowiki>|opiekun{{=}}NPAUser}}
** Parametry:
*** bot - nazwa bota,
*** url - adres strony, skąd przekopiowano tekst,
*** opiekun - opiekun bota.
** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}}, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis=
* Gdy szablon {{s|NPA całość}} wstawiono na stronę {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA całość|bot=NPAbot|url=http://www.adres.strony.pl|opiekun=NPAUser|typ jednostki={{{klucz|}}}}}}}
}}
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
r63uwuntcpij8q2ipwnveszseh5cifv
546446
546437
2026-06-11T17:35:01Z
Persino
2851
546446
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=NPA|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}} w nibyprzestrzeni użytkownika|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{s|NPA}} lub {{s|NPAfrgm}} albo przez bota {{s|NPA całość}}. W tej kategorii znajdują się te {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}}, których tekst znajduje się w Internecie i mógł zostać umieszczony w {{NAZWASERWISU}} bez zgody autora.
== Szablon {{s|NPA}} - ilustracja wywołania ==
A oto przykłady ilustrujące zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* Pierwsze wywołanie: '''{{Code|{{s|1=NPA|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i drugie: '''{{Code|{{s|1=NPA|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* Trzecie wywołanie: '''{{Code|{{s|1=NPA|2=fragment|3=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i czwarte: '''{{Code|{{s|1=NPA|2=fragment|3=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* Piąte wywołanie: '''{{Code|{{s|1=NPAfrgm|2=adres=<nowiki>http://www.adres.strony.pl</nowiki>}}}}''' i szóste: '''{{Code|{{s|1=NPAfrgm|2=<nowiki>http://www.adres.strony.pl</nowiki>}}}}'''.
* A oto opis zmiennych:
** '''adres''', chodzi tutaj o adres strony, skąd pochodzi tekst umieszczony na {{NAZWASERWISU}}.
** Gdy nie podano zmiennej '''adres''', wtedy:
*** jeżeli zmienna '''1''' nie jest '''fragment''', to '''1''' - źródło, z którego pochodzi NPA.
*** jeżeli zmienna '''1''' jest '''fragment''', to '''2''' - tutaj wpisujemy źródło, z którego pochodzi NPA.
* Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}}, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis =
* Przykład ilustrujący wywołanie szablonu: pierwsze i drugie, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
* Przykład ilustrujący wywołanie szablonu: trzecie i czwarte, a nawet: piąte i szóste, gdzie ten szablon jest umieszczony na stronie {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA|fragment|adres=http://www.adres.strony.pl|typ jednostki={{{klucz|}}}}}}}
}}
== Szablon {{s|NPA całość}} - ilustracja wywołania ==
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|NPA całość|bot{{=}}NPAbot|url{{=}}<nowiki>http://www.adres.strony.pl</nowiki>|opiekun{{=}}NPAUser}}
** Parametry:
*** bot - nazwa bota,
*** url - adres strony, skąd przekopiowano tekst,
*** opiekun - opiekun bota.
** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}}, w ukrytej dla zwykłego użytkownika, w kategorii tutaj.
{{Tabela nawigacyjna
|styl = width:auto;text-align:left;
|funkcja = UkrytaNiewikitabelowaListaMenu
|tytuł = A po '''wywołaniu''' tego szablonu według powyższych przykładów na podstawie ich kolejności uzyskano wyniki:
|spis=
* Gdy szablon {{s|NPA całość}} wstawiono na stronę {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
{{OpakujKategorieZeSortowaniem|{{NPA całość|bot=NPAbot|url=http://www.adres.strony.pl|opiekun=NPAUser|typ jednostki={{{klucz|}}}}}}}
}}
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
qkoutf3hf35a7sswahfji35mdwqfc23
Szablon:Strona główna/Treść
10
7139
546466
525957
2026-06-11T23:47:03Z
Persino
2851
546466
wikitext
text/x-wiki
<templatestyles src="Moduł:Lista/styles.css" /><!--
--><noinclude><!--
--><templatestyles src="Szablon:Strona główna/styles.css" />
{{ProstaStronaStart|pasek przewijania=auto}}
{{Div start|klasa=mainpage siatka-mobilna}}
{{Div start|klasa=maintext}}<!--
--></noinclude><!--
-->{{ElastycznyWiersz2
|styl=margin-top:4px;margin-bottom:4px;box-sizing:border-box;
|1={{ElastycznaKolumna2
|styl=width:100%;height:auto;margin-right:0.125rem;flex:1 1 auto;max-height:65rem;overflow:auto;overflow-x:hidden;
|klasa=menu-listy-elastyczny-treść mw-overflow-y
|1={{Pudełko ramkowe 4
|styl=width:auto;height:auto;margin-bottom:0.125rem;box-sizing:border-box
|grafika={{Plik|plik=Proposed Wikijunior Logo X1.png|rozmiar=50px|link=Wikijunior:Strona główna|rys=tak}}
|tytuł={{lk|Wikijunior}} - książki dla dzieci!
|tekst={{Strona główna/Szkoły}}
}}
|2={{Pudełko ramkowe 4
|styl=width:auto;height:auto;margin-top:0.125rem;margin-bottom:0.125rem;box-sizing:border-box
|grafika={{Plik|plik=Nuvola apps filetypes.svg|pozycja=prawo|rozmiar=50px|rys=tak}}
|tytuł=Czytelnia
|tekst={{Strona główna/Czytelnia}}
}}
|3={{Pudełko ramkowe 4
|styl=width:auto;height:auto;box-sizing:border-box;margin-top:0.125rem;margin-bottom:0.125rem;
|grafika={{ikona|aktualności|50}}
|tytuł=Obsługa, błędów, projektu pisania publikacji
|tekst={{Strona główna/Błędy}}
}}
|4=<!--{{ElastycznyWiersz2
|styl=width:100%;height:auto;margin-top:0.125rem;margin-bottom:0.125rem;box-sizing:border-box;
|klasa=main-książki-miesiąca-lista
|1=<!--{{Pudełko ramkowe 4
|styl=width:100%;height:auto;box-sizing:border-box;margin-top:0;margin-bottom:0;margin-right:0.125rem;flex:1 1 auto;
|grafika={{Plik|plik=Accessories-dictionary.png|rozmiar=30px|link=Category:Nowe podręczniki miesiąca|rys=tak}}
|tytuł={{lk|Nowe podręczniki miesiąca}}
|tekst=Publikacje wyróżnione przez użytkowników {{NAZWASERWISU|link=tak|wikipedia=tak}}, jako nowe podręczniki miesiąca:
{{Div|styl=margin:0;width:auto;max-height:6.8em;overflow:auto;|klasa=menu-listy-nowe-podręczniki-miesiąca hlist mw-overflow-y|{{ListaKategorii|Nowe podręczniki miesiąca}}}}
}}
|2=-->{{Pudełko ramkowe 4
|styl=width:100%;height:auto;box-sizing:border-box;margin-top:0.125rem;margin-bottom:0.125rem;<!--margin-left:0.125rem;-->flex:1 1 auto;
|grafika={{Plik|plik=Accessories-dictionary_Faenza.svg|rozmiar=30px|link=Category:Wyróżnienia książek miesiąca|rys=tak}}
|tytuł={{lk|Wyróżnienia książek miesiąca}}
|tekst=Publikacje wyróżnione przez użytkowników {{NAZWASERWISU|link=tak|wikipedia=tak}}, jako wyróżnione książki miesiąca:
{{Div|styl=margin:0;width:auto;max-height:6.8em;overflow:auto;|klasa=menu-listy-wyróżnione-książki-miesiąca hlist mw-overflow-y|{{ListaKategorii|Wyróżnienia książek miesiąca}}}}
}}
<!--}}-->
|5={{Pudełko ramkowe 4
|styl=width:100%;height:100%;box-sizing:border-box;margin-top:0.125rem;
|grafika={{Plik|plik=Noia_64_apps_kcron.png|rozmiar=50px|link={{Ns:Template}}:Strona główna/Nowe podręczniki|rys=tak}}
|tytuł=Nowe podręczniki - {{lz|s={{Ns:Template}}:Strona główna/Nowe podręczniki|c=action=edit|n=edytuj}}
|tekst=Kilka ostatnich książek, nad którymi wolontariusze rozpoczęli prace:
{{Div|styl=margin:0;width:auto;max-height:6.8em;overflow:auto;|klasa=menu-listy-nowe-podręczniki hlist mw-overflow-y|{{Strona główna/Nowe podręczniki}}}}
}}
}}
|2={{ElastycznaKolumna2
|styl=width:100%;height:auto;box-sizing:border-box;margin-left:0.125rem;flex:1 1 auto;overflow:auto;max-height:65rem;
|klasa=menu-listy-elastyczny-treść mw-overflow-y
|1={{Pudełko ramkowe 4
|styl=width:auto;height:auto;box-sizing:border-box;margin-bottom:0.125rem;
|grafika={{Plik|plik=Nuvola apps bookcase pastel.png|rozmiar=50px|link=Wikibooks:Polecane książki|rys=tak}}
|tytuł={{lk|Polecane książki}} {{Span|styl=font-size: 60%; font-weight: normal;|({{lr|Polecane książki|zobacz więcej}})}}
|tekst=Oto najlepsze, najczęściej polecane książki na polskim projekcie {{NAZWASERWISU|link=tak|wikipedia=tak}}, świadczące o dobrym imieniu tego serwisu, również dobrze opracowane i przemyślane z myślą o każdym użytkowniku, czytelnika zbioru książek. Reprezentujemy kolejne trzy publikacje ze zbioru podręczników:
{{Hr}}
{{Div|styl=height:345px;overflow-y:auto;margin-top:7px;|klasa=strona-główna-polecane_książki mw-overflow-x mw-overflow-y|{{Strona główna/Polecane książki}}}}
}}
|2={{Pudełko ramkowe 4
|styl=width:auto;height:auto;margin-top:0.125rem;margin-bottom:0.125rem;box-sizing:border-box
|grafika={{Plik|plik=Supreme pizza.jpg|rozmiar=50px|link=Książka kucharska|rys=tak}}
|tytuł={{lg|Książka kucharska}}
|tekst={{Strona główna/Książka kucharska}}
}}
|3={{Pudełko ramkowe 4
|styl=width:auto;height:auto;margin-top:0.125rem;margin-bottom:0.125rem;box-sizing:border-box;
|grafika={{ikona|pt|50}}
|tytuł=Warto zajrzeć
|tekst={{Strona główna/Warto zajrzeć}}
}}
|4={{Pudełko ramkowe 4
|styl=width:auto;height:100%;margin-top:0.125rem;box-sizing:border-box;
|grafika={{ikona|admin|50}}
|tytuł=Administracja na {{NAZWASERWISU|po=ie|link=tak|wikipedia=tak}}
|tekst={{Strona główna/Administracja}}
}}
}}
}}<!--
--><noinclude><!--
-->{{Div koniec}}
{{Div koniec}}
{{ProstaStronaKoniec}}
{{Kategoria|Strona główna}}<!--
-->__NOTOC__<!--
--></noinclude>
p0f5he7jwov29qoql01gul8z5bis33y
Kategoria:Szablony do weryfikacji
14
33350
546453
501920
2026-06-11T20:18:50Z
Persino
2851
546453
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|styl=margin-left:0.625rem}}
Zawiera szablony, które nie powinny być więcej używane i zastąpione innymi. Aby dodać szablon do tej kategorii, wstaw do niego szablon {{s|Sprzątanie szablonów}}, z opcjonalnym parametrem z dodatkowym objaśnieniem.
=== A oto ilustracja wywołania szablonu ===
A oto przykład ilustrujący zasadę umieszczania w tej kategorii, szablonu:
* {{s|1=Sprzątanie szablonów|2=Zamiast szablonu {{s|CentrujWzór}} użyj szablonu {{s|s|Wzór}}.}}
** Szablon umieszcza szablon w kategorii tutaj.
A po wywołaniu tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Sprzątanie szablonów|Zamiast szablonu {{s|CentrujWzór}} użyj szablonu {{s|s|Wzór}}.}}}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Kategorie opisowe Wikibooks}}
srqpdvq2uxjfstomph0lafzjrfpua2c
546454
546453
2026-06-11T20:19:16Z
Persino
2851
/* A oto ilustracja wywołania szablonu */
546454
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|styl=margin-left:0.625rem}}
Zawiera szablony, które nie powinny być więcej używane i zastąpione innymi. Aby dodać szablon do tej kategorii, wstaw do niego szablon {{s|Sprzątanie szablonów}}, z opcjonalnym parametrem z dodatkowym objaśnieniem.
=== A oto ilustracja wywołania szablonu ===
A oto przykład ilustrujący zasadę umieszczania w tej kategorii, szablonu:
* {{s|1=Sprzątanie szablonów|2=Zamiast szablonu {{s|s|CentrujWzór}} użyj szablonu {{s|s|Wzór}}.}}
** Szablon umieszcza szablon w kategorii tutaj.
A po wywołaniu tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Sprzątanie szablonów|Zamiast szablonu {{s|CentrujWzór}} użyj szablonu {{s|Wzór}}.}}}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Kategorie opisowe Wikibooks}}
2mu0xto2k5iohsg7a9lstye46xe3lvp
Kategoria:Pliki podejrzane o naruszenie praw autorskich
14
33424
546444
524186
2026-06-11T17:30:54Z
Persino
2851
546444
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=strona pliku|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
ph33u7nuxzm6gb43g4a5der6458mjmt
Szablon:ElastycznyWiersz
10
33622
546460
503166
2026-06-11T23:34:51Z
Persino
2851
546460
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:ElastycznyWiersz/styles.css" /><div style="display:flex;flex-direction:row;{{{styl|}}}" class="elastyczny-wiersz elastyczny {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|<div {{((}}#if:{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||coś}}{{)))}}{{{styl elementu|}}}{{!}}style{{=}}"{{{styl elementu|}}};{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||flex:1 1 auto;margin:auto 0 auto 0;width:auto;height:100%;box-sizing:border-box;}}{{)))}}"{{))}} {{#if:{{{klasa elementu|}}}|class="{{{klasa elementu}}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}{{(((}}___{{((}}_{{))}}{{)))}}{{))}}"|{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}__{{((}}_{{))}}{{!}}{{)))}}"{{))}}}}>
{{(((}}{{((}}_{{))}}{{!}}{{)))}}</div>}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
b5tvt6os045zz8il9wanom7tvl5gg6q
Szablon:ElastycznaKolumna
10
33737
546462
503167
2026-06-11T23:35:58Z
Persino
2851
546462
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:ElastycznyWiersz/styles.css" /><div style="display:flex;flex-direction:column;{{{styl|}}}" class="elastyczna-kolumna elastyczny {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|<div {{((}}#if:{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||coś}}{{)))}}{{{styl elementu|coś}}}{{!}}style{{=}}"{{{styl elementu|}}};{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||width:100%;height:auto;box-sizing:border-box;}}{{)))}}"{{))}} {{#if:{{{klasa elementu|}}}|class="{{{klasa elementu}}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}{{(((}}___{{((}}_{{))}}{{)))}}{{))}}"|{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}__{{((}}_{{))}}{{!}}{{)))}}"{{))}}}}>
{{(((}}{{((}}_{{))}}{{!}}{{)))}}</div>}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
dc4n4z1k5k9ulsdvgpbbx1a4lmqmwlh
Kategoria:Artykuły z zgłoszonymi błędami
14
33896
546423
451451
2026-06-11T16:30:52Z
Persino
2851
546423
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}}|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostkę użytkownika|jednostka brudnopisu projektu=Jednostkę brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza artykuł w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostkę użytkownika|jednostka brudnopisu projektu=Jednostkę brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
1mdnfi8157dqrjo7pt7gzk6h68ptnha
546427
546423
2026-06-11T16:39:42Z
Persino
2851
546427
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}}|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza artykuł w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostkę użytkownika|jednostka brudnopisu projektu=Jednostkę brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
pnob9djg5ouu0xa1t9hdrep0zc5idp7
546428
546427
2026-06-11T16:42:22Z
Persino
2851
546428
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}}|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostka użytkownika|jednostka brudnopisu projektu=jednostka brudnopisu projektu|strona pliku=plik}} w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostkę użytkownika|jednostka brudnopisu projektu=Jednostkę brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
51okfmlmpqdqmrvedrodysfmc3dcd8u
546430
546428
2026-06-11T16:44:09Z
Persino
2851
546430
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}}|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}} w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostkę użytkownika|jednostka brudnopisu projektu=Jednostkę brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
kivu10gxs7tviegpqw5rgqzj46cjf9i
546431
546430
2026-06-11T16:46:24Z
Persino
2851
546431
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}}|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}} w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
4hjpqsx2u44hb2nh9bs86nkhdgm74e8
546434
546431
2026-06-11T16:50:19Z
Persino
2851
546434
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{Śródtekst|bez preprocess=tak|klucz=artykuł|uchwyt=zgłoszone błędy|tekst=
Pojedyncze {{#switch:{{{klucz|}}}|artykuł=artykuły|podręcznik=podręczniki|artykuł dla dzieci=artykuły dla dzieci|podręcznik dla dzieci=podręczniki dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliki}} {{#switch:{{{klucz|}}}|artykuł|podręcznik=w przestrzeni nazw {{Np|(main)|link=tak}}|artykuł dla dzieci|podręcznik dla dzieci=w przestrzeni nazw {{Np|Wikijunior|link=tak}} bez {{lj2|Strona główna}}|jednostka użytkownika=w przestrzeni nazw {{Np|User|link=tak}} w nibyprzestrzeni użytkownika|jednostka brudnopisu projektu=w nibyprzestrzeni nazw {{lr2|Brudnopis}} w przestrzeni nazw {{Np|Wikibooks|link=tak}}|strona pliku=w przestrzeni nazw {{Np|File|link=tak}}}} umieszczamy tu, wstawiając do tekstu szablon {{S|Zgłoś błąd}} (lub {{s|ZB}}). Zgłoszone tutaj posiadają posiadają prawdopodobnie błędy (problemy), które należy niezwłocznie usunąć.
=== A oto ilustracja wywołania tego szablonu i jego przekierowania ===
A oto przykład ilustrujący zasadę umieszczania '''w tej kategorii''', {{#switch:{{{klucz|}}}|artykuł=artykułu|podręcznik=podręcznika|artykuł dla dzieci=artykułu dla dzieci|podręcznik dla dzieci=podręcznika dla dzieci|jednostka użytkownika=jednostki użytkownika|jednostka brudnopisu projektu=jednostki brudnopisu projektu|strona pliku=pliku}}:
* '''Przykład:'''
** {{s|1=Zgłoś błąd|2=data={{Czas|Y-m-d}}|3=powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia}}
*** '''data''', data zaistnienia błędu
*** '''powód''', powód dlaczego należy zgłosić błąd
*** Szablon umieszcza {{#switch:{{{klucz|}}}|artykuł=artykuł|podręcznik=podręcznik|artykuł dla dzieci=artykuł dla dzieci|podręcznik dla dzieci=podręcznik dla dzieci|jednostka użytkownika=jednostkę użytkownika|jednostka brudnopisu projektu=jednostkę brudnopisu projektu|strona pliku=plik}} w kategorii tutaj.
* A po '''wywołaniu''' tego szablonu uzyskano wynik:
{{OpakujKategorieZeSortowaniem|{{Zgłoś błąd|data={{Czas|Y-m-d}}|powód={{#switch:{{{klucz|}}}|artykuł=Artykuł|podręcznik=Podręcznik|artykuł dla dzieci=Artykuł dla dzieci|podręcznik dla dzieci=Podręcznik dla dzieci|jednostka użytkownika=Jednostka użytkownika|jednostka brudnopisu projektu=Jednostka brudnopisu projektu|strona pliku=Plik}} zawiera błędy do naprawienia|typ jednostki={{{klucz|}}}}}}}
* Szablon {{s|ZB}} jest to ten sam szablon, co {{s|Zgłoś błąd}}, bo ten pierwszy jest przekierowaniem tego drugiego, stąd dlatego wywołanie tego pierwszego jest takie samo, co drugiego.
}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
d8ga2ydc6sbpe267bh4shhhqlkeun3m
Kategoria:Pliki z zgłoszonymi błędami
14
33897
546433
451457
2026-06-11T16:49:09Z
Persino
2851
546433
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=strona pliku|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
r5g8wsde5qewi6xpmlryiittdf8to60
Kategoria:Podręczniki podejrzane o naruszenie praw autorskich
14
41823
546438
524181
2026-06-11T17:25:07Z
Persino
2851
546438
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=podręcznik|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
hqvhomtyvfhiydkjl06y7yadja51vwr
Kategoria:Podręczniki z zgłoszonymi błędami
14
42011
546424
451452
2026-06-11T16:35:37Z
Persino
2851
546424
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=podręcznik|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
cfptlunyskd18d90dde2aj6g6s7u4en
Kategoria:Artykuły dla dzieci, z zgłoszonymi błędami
14
45204
546425
451453
2026-06-11T16:36:58Z
Persino
2851
546425
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=artykuł dla dzieci|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
p7rgovcxgkdisq2tjy6wtj2annozwu5
Kategoria:Podręczniki dla dzieci, z zgłoszonymi błędami
14
45205
546426
451454
2026-06-11T16:38:08Z
Persino
2851
546426
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=podręcznik dla dzieci|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
1b1hoe4n7ri8omhdzcgpxfxpcbqndmj
Kategoria:Artykuły dla dzieci podejrzane o naruszenie praw autorskich
14
45206
546439
524182
2026-06-11T17:26:05Z
Persino
2851
546439
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=artykuł dla dzieci|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
g18cse6kl2ewt0voaro9oc0urcilx8f
Kategoria:Podręczniki dla dzieci podejrzane o naruszenie praw autorskich
14
45207
546440
524183
2026-06-11T17:27:19Z
Persino
2851
546440
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=podręcznik dla dzieci|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
gqger1emns3g68fbsl4q1lrw84u7re4
Kategoria:Jednostki użytkowników, z zgłoszonymi błędami
14
45216
546429
451455
2026-06-11T16:43:35Z
Persino
2851
546429
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=jednostka użytkownika|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
77b0hby37jfcwhly3cjlmgfwwc92gda
Kategoria:Jednostki użytkowników podejrzane o naruszenie praw autorskich
14
45218
546441
524184
2026-06-11T17:28:42Z
Persino
2851
546441
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=jednostka użytkownika|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
k5stx2ui39i9am33hbbzjp0bv0zgay5
Kategoria:Jednostki brudnopisu projektu podejrzane o naruszenie praw autorskich
14
50742
546442
524185
2026-06-11T17:29:26Z
Persino
2851
546442
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|3}}
{{PobierzŚródtekst|klucz=jednostka brudnopisu projektu|uchwyt=NPA|nazwa artykułu=|nazwa książki=Kategoria:Artykuły podejrzane o naruszenie praw autorskich}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
__HIDDENCAT__
{{Kategoria|Jednostki podejrzane o naruszenie praw autorskich}}
o2ttghigjpj2yvj72p6rwjoxs96u8u0
Kategoria:Jednostki brudnopisu projektu, z zgłoszonymi błędami
14
50757
546432
451456
2026-06-11T16:47:59Z
Persino
2851
546432
wikitext
text/x-wiki
<noinclude>{{StandardowaStronaStart}}</noinclude>
{{Szablon nawigacyjny konserwacyjny|2|1}}
{{PobierzŚródtekst|klucz=jednostka brudnopisu projektu|uchwyt=zgłoszone błędy|nazwa artykułu=|nazwa książki=Artykuły z zgłoszonymi błędami}}
{{DivClear}}
<noinclude>{{StandardowaStronaKoniec}}</noinclude>
{{Kategoria|Jednostki z zgłoszonymi błędami}}
mt80kz5phi4bq6lopkr8kd8gidy30yi
Moduł:StronicowyParser/ZbieranieDanychStron
828
55009
546449
546344
2026-06-11T18:35:34Z
Persino
2851
546449
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local tabela_elementow_strony_kodow={};
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) or tekst_rozwiniety_calego_artykulu;
end;
----
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
4riarogewkpcyzhf81p3eru9bjwhxz5
546452
546449
2026-06-11T19:49:25Z
Persino
2851
546452
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) or tekst_rozwiniety_calego_artykulu;
end;
----
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
3mw8q2avmyk17jm64y2xn43siwxzm04
546468
546452
2026-06-12T02:45:31Z
Persino
2851
546468
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowSzablonuISzablonu(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowSzablonuISzablonu);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
clm3s0gd6dhetql4hhbxhnn8hds7stm
546469
546468
2026-06-12T03:13:43Z
Persino
2851
546469
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,GeneralnaAnalizaSzablonuStronicowegoParsera) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
nxmk9zxxdhim119gour3zne0de35esp
546470
546469
2026-06-12T03:39:00Z
Persino
2851
546470
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
teonho4osarkhekc0n6aoivgnll2gz9
546472
546470
2026-06-12T03:45:40Z
Persino
2851
546472
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
spg8zpqqnru6f7q0x7indrl2ox0k15c
546483
546472
2026-06-12T05:51:40Z
Persino
2851
546483
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
e7is9f2g9op3prpkhw6bdx4tx2g4kxc
546484
546483
2026-06-12T05:53:02Z
Persino
2851
546484
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
2aku0tysgfo10206gjp7yffdmd6ap42
546485
546484
2026-06-12T06:05:37Z
Persino
2851
546485
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
g6f9qwl5410w60ola4qmfo100uu4vwm
546486
546485
2026-06-12T06:22:11Z
Persino
2851
546486
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
2x4oi7ssk4wq947a3s89j4ae0t2y94z
546520
546486
2026-06-12T11:24:39Z
Persino
2851
546520
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane=wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["aktywny"]=true,};
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
1h83kgdp2o3gd8f1rwk7uz6637z527q
546521
546520
2026-06-12T11:40:11Z
Persino
2851
546521
Scribunto
text/plain
local p={};
function p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeiBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
kod_uchwytu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(kod_uchwytu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
local html_modul=require("Module:Html");
kod_uchwytu=html_modul.DecodeHtml(kod_uchwytu,true);
if(kod_uchwytu~="")then
KtorySzablonMaZwracacKategorie(kod_uchwytu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=kod_uchwytu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local kod_uchwytu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(kod_uchwytu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,kod_uchwytu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
for _,tab_value1 in ipairs(tab_ksiazki.spis)do
if(tab_value1[2])then
for _,nazwa_artykulu1 in ipairs(tab_value1[2])do
if(nazwa_artykulu1[1]==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,((not czy_inna_wartosc_tekst)and true or false));
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false);
end;
end;
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not nazwa_przestrzeni)and(not nazwa_jednostki))then return;end;
local parametry_modul=require("Module:Parametry");
if((nazwa_jednostki) and (nazwa_jednostki==""))then return;end;
local szablonowe_modul=require("Module:Szablonowe");
if((nazwa_jednostki and mw.ustring.match(nazwa_jednostki,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
or (nazwa_przestrzeni and mw.ustring.match(nazwa_przestrzeni,szablonowe_modul.NormaWzoruKodowaniaTekstu()))
)then return;end;
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
nazwa_jednostki=html_modul.DecodeHtml(nazwa_jednostki,true);
end;
local tabela_nazw_art={};
local nazwa_jednostki=(nazwa_jednostki
and mw.ustring.gsub(nazwa_jednostki,"^([^#]*)#(.*)$","%1")
or nil
) or ksiazkowe_modul["NazwaArtykułu"](nil,tabela_nazw_art);
if(nazwa_przestrzeni)then
nazwa_przestrzeni=html_modul.DecodeHtml(nazwa_przestrzeni,true);
end;
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw_art);
local strona=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=self.nazwa_modulu_biezaca,};
--strona=ksiazkowe_modul["PEŁNANAZWASTRONY"](strona);
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
local nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw)));
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local tabela_listy_danych_analizy_ksiazki=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,nil,czy_szablon_pudelkowy_strony_zbiorczej);
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_aktualna,bezuchwytowe)
local nazwa_artykulu=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[bezuchwytowe and 1 or 2];
local pelna_nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[bezuchwytowe and 2 or 3];
local parametry_modul=require("Module:Parametry");
local nazwy_modul=require("Module:Nazwy");
local html_modul=require("Module:Html");
if(nazwa_artykulu)then
nazwa_artykulu=html_modul.DecodeHtml(nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
nazwa_artykulu=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=nazwa_artykulu,[2]="",};
end;
local nazwa_ksiazki;local nazwa_przestrzeni_ksiazki;local nazwa_przestrzeni;
if(pelna_nazwa_ksiazki)then
pelna_nazwa_ksiazki=html_modul.DecodeHtml(pelna_nazwa_ksiazki,true);
local techniczne_modul=require("Module:Techniczne");
pelna_nazwa_ksiazki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_ksiazki,[2]=nazwa_aktualna,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna);
local nazwy_modul=require("Module:Nazwy");
local czy_inna_wartosc_tekst=true;
if((nazwa_artykulu)and(nazwa_ksiazki))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwy_modul["NazwaModułu"]("",nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst);
end;
end;
function p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,nazwa_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,czy_pobierz)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca);
----
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(uchwyt_obiektu))then
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
end;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(parametry_modul.CzyTak(uchwyt_obiektu))then
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
if(nazwa_artykulu)then
if(nazwa_artykulu~="")then
if(not nazwa_ksiazki)then
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
elseif(nazwa_ksiazki=="")then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
end;
elseif((nazwa_ksiazki)and(nazwa_ksiazki~=""))then
nazwa_artykulu="";
elseif((nazwa_ksiazki)and(nazwa_ksiazki==""))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
return;
else
nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
end;
if((nazwa_przestrzeni~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)
or(nazwa_przestrzeni_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)
or(nazwa_ksiazki~=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)
or(nazwa_artykulu~=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz);
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
elseif((uchwyt_obiektu)and(uchwyt_obiektu==""))then
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,nil);
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu))then
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak uchwytu",nazwa_obiektu);
end;
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA)then
__FUNKCJA(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
else
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)
p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,function()
local parametry_modul=require("Module:Parametry");
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(parametry_modul.CzyTak(nazwa_ksiazki))and(nazwa_artykulu))then
local tablica_zmiennych2={};
tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2={}
local tabela_listy_danych_analizy_ksiazki0,tablica_zmiennych2,czy_inna=p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, false,tablica_zmiennych2);
if(tabela_listy_danych_analizy_ksiazki0)then
if((not czy_inna)or(not tablica_zmiennych2))then return;end;
local JuzPoliczone=function()
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych)do
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,pozycja);
end;
end;
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błąd wewnętrzny modułu lua stronicowego parsera");
end;
end;
else
p.PusteParametryReferencji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu);
end;
end);
end;
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local function __FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==4))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==2)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif(kod_wyniku==3)then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nil);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if(tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==4))then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku==1)then
nazwa_artykulu=artykul;
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
elseif(kod_wyniku==2)then
local nazwa_artykulu=artykul;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if((not kod_wyniku_przekierowan)or(kod_wyniku_bazowy==4))then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
----
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
if((not tekst_rozwiniety_calego_artykulu_ref)or(not tablica_analizy_obiektow_strony_dany_modul_ref)or(not tablica_danych_parametrow_szablonu_strony_ref))then
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul.RekurencyjnyZakodowanoSpreparowanyWikikodStrony(self,nazwa_modulu_aktualna_czy_biezaca,(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))and true or nil),
nil)
else
tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=tekst_rozwiniety_calego_artykulu_ref,tablica_analizy_obiektow_strony_dany_modul_ref,tablica_danych_parametrow_szablonu_strony_ref;
end;
----
if(not czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then return 0;end;
end;
if(czy_artykul_korzystany)then
if(not tekst_rozwiniety_calego_artykulu)then
if(strona_zbiorcza)then
self.tabela_listy_danych_analizy_ksiazki["CzyStronaSubst"]="tak";
end;
return nil;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local parametry_modul=require("Module:Parametry");
if((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca))then
local aktualna_nazwa_modulu=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwa_modulu_aktualna_czy_biezaca or nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu);
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(self,aktualna_nazwa_modulu);
if(tekst)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,aktualna_nazwa_modulu);
local tablica_danych_parametrow_szablonu_strony={};
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,aktualna_nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
end;
elseif(czy_artykul_korzystany)then
if(czy_link)then
local wartosc_elementu;
if(not czy_linkobiekt_z_parametrami)then
wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
else
local typ=tabela_parametrow_szablonu["typ"];
if(typ)then
typ=format_elementowy_referencji_obiektowy[typ] and typ or nil;
if(typ)then
wartosc_elementu=mw.getContentLanguage():ucfirst(typ);
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
end;
end;
elseif(czy_pobierz)then
local wartosc_elementu=szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,wartosc_elementu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie,true);
return;
end;
end;
end;
if(czy_wypowiedzenie)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,"Obiekt", czy_artykul_korzystany,tablica_obiekty[5],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
p.UchwytyZeiBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,wartosc_elementu, czy_artykul_korzystany,numer_uchwytu--[[elementy_w_tablicy_obiekty[5]],tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
if(lista_dwuelementowa)then
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
local bez_preprocess=parametry_modul.CzyTak(tabela_parametrow_szablonu["bez preprocess"]);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if(
(tab_szablony[nazwa_szablonu])
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_formatowania_tekstu[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
)then
if(not czy_artykul_korzystany)then
tabela_parametrow_szablonu["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_artykulu~="") and ("/"..nazwa_artykulu) or ""))
if(self)then
local czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
if(czy_link_lub_pobierz)then
p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end;
return nil;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- instrukcje warunkowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- wywołania ramek Lua w Scribunto
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
---- tagi szablonowe;
return szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
end);
czy_szablon_wszystko=czy_szablon_wszystko or true;
if(wynik)then return wynik;end;
elseif(obiekt=="ZMIENNA")then
czy_szablon_wszystko=czy_szablon_wszystko or true;
local zawartosc=mw.ustring.match(szablon,"^{{{(.*)}}}$");
if(zawartosc)then
zawartosc=mw.ustring.gsub(zawartosc,"|","{{!}}");
return "{{(((}}"..zawartosc.."{{)))}}";
end;
end;
end);
if((czy_szablon_wszystko)and(not bez_preprocess))then
local frame=mw.getCurrentFrame();
tekst=frame:preprocess(tekst);
end;
lista_dwuelementowa[2]=tekst;
end;
--local __metatabelka=getmetatable(tabela_parametrow_szablonu);
--if(__metatabelka)then setmetatable(tabela_parametrow_szablonu,nil);end;
if(not czy_artykul_korzystany)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
{tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,},
});
else
if(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then tablica_zmiennych.tablica_szablonu_tekstu_korzystanych={};end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,{
{wartosc_elementu,lista_dwuelementowa[1],},
{},
{{tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,},obiekt,kod,},
});
end;
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
p.GeneralneLinkowanie(self,obiekt,kod,tablica_zmiennych,tabela_parametrow_szablonu,"Obiekt",nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return;
else
if(stronicowyparser_obiekty_modul.szablony_z_lokalnym_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return;
elseif(stronicowyparser_obiekty_modul.bez_uchwytow_spis_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci=nil;
if(not self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
else
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=nil;
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
else
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,nil,KtorySzablonMaZwracacKategorie);
end;
return;
elseif((strona_zbiorcza)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,true,KtorySzablonMaZwracacKategorie);
return;
end;
end;
end;
end;
end;
end;
end;
end;
----
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
stronicowyparser_potrzebne_modul:AnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_danych_parametrow_szablonu_strony,AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego);
end;
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer);
end;
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["aktywny"]=true,},};
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local toc;
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicy()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicy},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
kjpxac3zsd27qp53pfgmkzq7yw2jaf4
Szablon:ElastycznyWiersz2
10
55249
546461
452225
2026-06-11T23:35:30Z
Persino
2851
546461
wikitext
text/x-wiki
<includeonly><div style="display:flex;flex-direction:row;{{{styl|}}}" class="elastyczny-wiersz elastyczny2 {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|{{(((}}{{((}}_{{))}}{{!}}{{)))}}}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
554awmg46qmq503myvse6hc2lgzdz8u
Szablon:ElastycznaKolumna2
10
55252
546463
452227
2026-06-11T23:36:27Z
Persino
2851
546463
wikitext
text/x-wiki
<includeonly><div style="display:flex;flex-direction:column;{{{styl|}}}" class="elastyczna-kolumna elastyczny2 {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|{{(((}}{{((}}_{{))}}{{!}}{{)))}}}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
344adbepi34zj53s8wae94fmoq9byea
Szablon:ElastycznyZawijanyWiersz2
10
55288
546465
452229
2026-06-11T23:37:48Z
Persino
2851
546465
wikitext
text/x-wiki
<includeonly><div style="display:flex;flex-wrap:wrap;{{{styl|}}}" class="elastyczny-zawijany-wiersz elastyczny2 {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|{{(((}}{{((}}_{{))}}{{!}}{{)))}}}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
m8fqnvkf4880is9tistuk132iea81al
Szablon:ElastycznyZawijanyWiersz
10
55289
546464
503168
2026-06-11T23:37:02Z
Persino
2851
546464
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:ElastycznyWiersz/styles.css" /><div style="display:flex;flex-wrap:wrap;{{{styl|}}}" class="elastyczny-zawijany-wiersz elastyczny {{{klasa|}}}">{{#invoke:Ramka|Powtarzaj|<div {{((}}#if:{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||coś}}{{)))}}{{{styl elementu|}}}{{!}}style{{=}}"{{{styl elementu|}}};{{(((}}_{{((}}_{{))}}{{!}}{{#if:{{{styl elementu|}}}||flex:1 1 auto;margin:auto 0 auto 0;width:auto;height:100%;box-sizing:border-box;}}{{)))}}"{{))}} {{#if:{{{klasa elementu|}}}|class="{{{klasa elementu}}} {{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}{{(((}}___{{((}}_{{))}}{{)))}}{{))}}"|{{((}}#if:{{(((}}__{{((}}_{{))}}{{!}}{{)))}}{{!}}class{{=}}"{{(((}}__{{((}}_{{))}}{{!}}{{)))}}"{{))}}}}>
{{(((}}{{((}}_{{))}}{{!}}{{)))}}</div>}}</div></includeonly><noinclude>{{Dokumentacja}}</noinclude>
58xe6fx5vrne6whk1nshnjts7cnpg90
Moduł:Linki
828
56416
546515
546328
2026-06-12T10:47:44Z
Persino
2851
546515
Scribunto
text/plain
local p={};
p["PrzetłumaczZnakZastępczyNaStronę"]=function(nazwa_przestrzeni_nazw,nazwa_strony,kod_jezyka,kod_projektu,hash)
local czy_pusta_nazwa_przestrzeni_nazw=mw.ustring.match(nazwa_przestrzeni_nazw,"^([%s_:]*)$");
local czy_pusta_nazwa_strony=mw.ustring.match(nazwa_strony,"^([%s_:]*)#.*$") or mw.ustring.match(nazwa_strony,"^([%s_:]*)$");
if(not czy_pusta_nazwa_przestrzeni_nazw and czy_pusta_nazwa_strony)then
local tabglownestronyprojektu=mw.loadData("Module:Nazwy/przestrzenie").tabnp;
local parametry_modul=require("Module:Parametry");
nazwa_przestrzeni_nazw=parametry_modul["Odstępy"](nazwa_przestrzeni_nazw);
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(not czy_biezaca)then
local nazwy_modul=require("Module:Nazwy");
local wiki_modul=require("Module:Wiki");
local nazwa_kanoniczna_nazwy_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["przedmiotowa"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}
local nazwa_bazowa_strony=tabglownestronyprojektu[nazwa_kanoniczna_nazwy_przestrzeni_nazw];
if(nazwa_bazowa_strony)then
local nazwa_strony_na_innym_projekcie=wiki_modul.WikidaneOdpowiednikStrony{
["nazwa strony"]=nazwa_bazowa_strony,
["kod języka"]=kod_jezyka,
["kod projektu"]=kod_projektu,
["kod języka bazy"]="pl",
["kod projektu bazy"]=(nazwa_kanoniczna_nazwy_przestrzeni_nazw~="Project")and "w" or "b",
}
if(nazwa_strony_na_innym_projekcie)then
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({["nazwa"]=nazwa_strony_na_innym_projekcie,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu});
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
else
return nazwa_bazowa_strony,false;
end;
end;
else
local nazwy_modul=require("Module:Nazwy");
if(hash)then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local prze_bierzacej_strony=nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazw);
local nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,};
if(nazwa_przestrzeni_nazw==prze_bierzacej_strony)then
return nazwy_modul["PEŁNANAZWASTRONY"](nil,tabela_nazw),true;
end;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_kanoniczna_nazwy_przestrzeni_nazw=nazwy_modul.Np{["nazwa"]=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["przedmiotowa"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak"}
local nazwa_strony_glownych_stron_projektu=tabglownestronyprojektu[nazwa_kanoniczna_nazwy_przestrzeni_nazw];
if(nazwa_strony_glownych_stron_projektu)then
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({["nazwa"]=nazwa_strony_glownych_stron_projektu});
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
end;
end;
elseif czy_pusta_nazwa_przestrzeni_nazw and czy_pusta_nazwa_strony then
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
if((czy_biezaca)and(hash))then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul["PEŁNANAZWASTRONY"](),true;
end;
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local tablokalnesiostrzane=wiki_interwiki_modul.tablica_lokalne_siostrzane;
if(tablokalnesiostrzane[kod_projektu])then
local wiki_modul=require("Module:Wiki");
local pudelko_modul=require("Module:Pudełko");
local strona_glowna_tego_projektu=pudelko_modul["Strona główna tego projektu"]();
if(not czy_biezaca)then
local nazwa_strony_glownej_na_innym_projekcie=wiki_modul.WikidaneOdpowiednikStrony{
["nazwa strony"]=strona_glowna_tego_projektu,
["kod języka"]=kod_jezyka,
["kod projektu"]=kod_projektu,
}
if(nazwa_strony_glownej_na_innym_projekcie)then
return nazwa_strony_glownej_na_innym_projekcie,false;
end;
else
return strona_glowna_tego_projektu,false;
end;
end;
end;
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
end;
p["PoprawLinki"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local argument_pierwszy=PobierzParametr(1);
local z_kodowaniem=PobierzParametr("uri") or PobierzParametr(2);
z_kodowaniem=parametry_modul.CzyTak(z_kodowaniem);
local function pojedynczy_link(link)
local strona=mw.ustring.match(link,"^%[%[:?([^%[%]|]*)");
local nazwa=mw.ustring.match(link,"^%[%[[^|]*|([^%[%]]*)%]%]$") or strona;
local z_kodowaniem_temp=(mw.ustring.match(strona,"%%%x%x")and true or false) or z_kodowaniem;
link=p.TworzenieWikiLinku(nil,nil,nil,strona,nil,nazwa,nil,nil,false,nil,nil,nil,nil,nil,nil,nil,z_kodowaniem_temp);
return link;
end;
return mw.ustring.gsub(argument_pierwszy,"(%[%[[^%[%]]*%]%])",function(s)return pojedynczy_link(s);end);
end;
p["WydobądźLinki"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc,_=PobierzParametr(1);
local z_kodowaniem=PobierzParametr("uri") or PobierzParametr(2);
local specjalne_modul=require("Module:Specjalne");
wartosc=specjalne_modul["UsuńKomentarze"](wartosc);
wartosc=specjalne_modul["UsuńSzablonyStylów"](wartosc);
wartosc=specjalne_modul["UsuńZnaczniki"](wartosc);
wartosc=specjalne_modul["UsuńKategorie"](wartosc);
wartosc=specjalne_modul["UsuńWywołaniaPlików"](wartosc);
wartosc=specjalne_modul["UsuńInterwiki"](wartosc);
local linki_modul=require("Module:Linki");
wartosc=linki_modul["PoprawLinki"]{wartosc,z_kodowaniem};
return wartosc;
end;
function p.TworzenieWikiLinku(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,z_kodowaniem)
if(not czy_url)then
local parametry_modul=require("Module:Parametry");
local czy_klucz_projektu_do_projektu_linku=parametry_modul.CzyTak(klucz_projektu_do_projektu_linku);
local czy_kod_jezyka_do_projektu_linku=parametry_modul.CzyTak(kod_jezyka_do_projektu_linku);
local czy_kod_projektu_do_projektu_linku=parametry_modul.CzyTak(kod_projektu_do_projektu_linku);
local czy_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
local czy_po=parametry_modul.CzyTak(po);
if(not czy_naglowek_strony)then
if(czy_nazwa_strony_linku)then
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local strona_zmienna_tymczasowa=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu)
local naglowek_zmienna_tymczasowa=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
if(strona_zmienna_tymczasowa and naglowek_zmienna_tymczasowa)then
nazwa_strony_linku=strona_zmienna_tymczasowa;
naglowek_zmienna_tymczasowa=parametry_modul["Odstępy"]{[1]=naglowek_zmienna_tymczasowa,[2]="tak",[3]="tak",};
if(parametry_modul.CzyTak(naglowek_zmienna_tymczasowa))then
naglowek_strony=naglowek_zmienna_tymczasowa;
czy_naglowek_strony=true;
end;
end;
end;
else
naglowek_strony=parametry_modul["Odstępy"]{[1]=naglowek_strony,[2]="tak",[3]="tak",};
if(not parametry_modul.CzyTak(naglowek_strony))then
czy_naglowek_strony=false;
naglowek_strony=nil;
end;
end;
---
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local interwikimap=wiki_interwiki_modul.interwikimap;
local interwikisiostrzaneangielskie=wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie;
local wiki_modul=require("Module:Wiki");
local kod_jezyka_uzyskany_poczatkowy,kod_projektu_uzyskany_poczatkowy=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
if(not kod_jezyka_uzyskany_poczatkowy or not kod_projektu_uzyskany_poczatkowy)then
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_uzyskany_poczatkowy or kod_jezyka_tego_projektu;
kod_projektu_uzyskany_poczatkowy=kod_projektu_uzyskany_poczatkowy or kod_projektu_tego_projektu;
end;
local czy_pelna_nazwa_strony_prawidlowa=parametry_modul["CzyTakCiąg"](nazwa_strony_linku) and not mw.ustring.match(nazwa_strony_linku,"^[%s_:]+$") or nil;
local tablica_kodow={};
local kod_jezyka_koncowy;local kod_projektu_koncowy;
---------------------------------------------------------------------
kod_jezyka_koncowy=kod_jezyka_uzyskany_poczatkowy;
kod_projektu_koncowy=kod_projektu_uzyskany_poczatkowy;
---------------------------------------------------------------------
local kod_jezyka_poczatkowy,kod_projektu_poczatkowy;
if(czy_pelna_nazwa_strony_prawidlowa)then
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy,kod_jezyka_poczatkowy,kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy,bez_przetwarzania_kodow and tablica_kodow or nil);
czy_pelna_nazwa_strony_prawidlowa=parametry_modul["CzyTakCiąg"](nazwa_strony_linku) and not mw.ustring.match(nazwa_strony_linku,"^[%s_:]+$") or nil;
end;
----
if(not nazwa)then
nazwa=nazwa_strony_linku..(czy_naglowek_strony and ("#"..naglowek_strony) or "");
nazwa=mw.ustring.gsub(nazwa,"[%s_]+"," ");
czy_nazwa=parametry_modul.CzyTak(nazwa);
end
local ciag_tablica_kodow="";
if(bez_przetwarzania_kodow)then
if(kod_jezyka_poczatkowy)then
if((kod_jezyka_uzyskany_poczatkowy==kod_jezyka_tego_projektu)and(kod_projektu_uzyskany_poczatkowy==kod_projektu_tego_projektu))then
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_poczatkowy;
else
ciag_tablica_kodow=kod_jezyka_poczatkowy;
end;
elseif(kod_projektu_poczatkowy)then
if((kod_jezyka_uzyskany_poczatkowy==kod_jezyka_tego_projektu)and(kod_projektu_uzyskany_poczatkowy==kod_projektu_tego_projektu))then
kod_projektu_uzyskany_poczatkowy=kod_projektu_poczatkowy;
else
ciag_tablica_kodow=kod_projektu_poczatkowy;
end;
end;
local ciag_tablica_kodow_zmienna_tymczasowa=table.concat(tablica_kodow,":");
ciag_tablica_kodow=ciag_tablica_kodow..(((ciag_tablica_kodow~="")and(ciag_tablica_kodow_zmienna_tymczasowa~=""))and ":" or "")..ciag_tablica_kodow_zmienna_tymczasowa;
else
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_koncowy;
kod_projektu_uzyskany_poczatkowy=kod_projektu_koncowy;
end;
local nazwy_modul=require("Module:Nazwy");
local czy_dyskusja=parametry_modul.CzyTak(dyskusja);
local pierwsza_litera=((czy_pelna_nazwa_strony_prawidlowa)and(not czy_dyskusja)) and mw.ustring.match(nazwa_strony_linku,"^(%a)") or nil;
local tabela_nazw={};
local nazwaprzestrzeni=czy_pelna_nazwa_strony_prawidlowa and ((not czy_dyskusja)and nazwy_modul["NAZWAPRZESTRZENI"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy},tabela_nazw)
or nazwy_modul["PRZESTRZEŃDYSKUSJI"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw)) or "";
local nazwastrony=czy_pelna_nazwa_strony_prawidlowa and nazwy_modul["NAZWASTRONY"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw) or "";
local linki_modul=require("Module:Linki");
local strona_inna_zmienna_tymczasowa,czy_strona_lokalna=linki_modul["PrzetłumaczZnakZastępczyNaStronę"](nazwaprzestrzeni,nazwastrony,kod_jezyka_koncowy,kod_projektu_koncowy,czy_naglowek_strony);
local czy_pelna_nazwa_strony_prawidlowa=((czy_pelna_nazwa_strony_prawidlowa)and(parametry_modul["CzyTakCiąg"](strona_inna_zmienna_tymczasowa) and not mw.ustring.match(strona_inna_zmienna_tymczasowa,"^[%s_:]+$")) or strona_inna_zmienna_tymczasowa);
local function TabelaNazw()tabela_nazw_temp={};tabela_nazw_temp.czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;return tabela_nazw_temp;end;
if(nazwastrony=="")then
local tabela_nazw=TabelaNazw();
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw)
local techniczne_modul=require("Module:Techniczne");
local nowa_nazwa_strony=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
if(nazwa)then
local f,ile=mw.ustring.gsub(nazwa,"%%s",function()return nil;end);
if(ile==1)then
nazwa=mw.ustring.format(nazwa,nowa_nazwa_strony) or nil;
elseif(ile==2)then
local nowa_nazwa_przestrzeni=nazwy_modul[(czy_dyskusja) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw);
if(tabela_nazw.czy_aktualna_wiki)then
nowa_nazwa_przestrzeni=nazwy_modul.Np{nazwa=nowa_nazwa_przestrzeni,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
nowa_nazwa_przestrzeni=nazwy_modul.NpDane{nazwa=nowa_nazwa_przestrzeni,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or nowa_nazwa_przestrzeni;
end;
nazwa=mw.ustring.format(nazwa,nowa_nazwa_przestrzeni,nowa_nazwa_strony) or nil;
end;
end;
end;
strona_inna_zmienna_tymczasowa=strona_inna_zmienna_tymczasowa or nazwa_strony_linku;
local function NazwaStronyDyskusji(strona)
if(czy_dyskusja and czy_pelna_nazwa_strony_prawidlowa)then
return nazwy_modul["NAZWASTRONYDYSKUSJI"]({[1]=strona,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw());
end;
return strona;
end;
local strona_zmienna_tymczasowa=NazwaStronyDyskusji(strona_inna_zmienna_tymczasowa);
nazwa_strony_linku=((not czy_strona_lokalna or ((czy_dyskusja)and(nazwy_modul["NAZWAPRZESTRZENI"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw())~=nazwy_modul["NAZWAPRZESTRZENI"]({[1]=strona_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw()))))and strona_zmienna_tymczasowa or "");
nazwa_strony_linku=pierwsza_litera and mw.ustring.gsub(nazwa_strony_linku,"^["..mw.getContentLanguage():ucfirst(pierwsza_litera)..mw.getContentLanguage():lcfirst(pierwsza_litera).."]",pierwsza_litera) or nazwa_strony_linku;
czy_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
local function BiezacaWikiDwukropek()
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
local czy_wstawiac_dwukropek;
if(czy_biezace_wiki)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwaprzestrzeni==nazwy_np_modul.Category)or(nazwaprzestrzeni==nazwy_np_modul.File))then
czy_wstawiac_dwukropek=true;
end;
end;
return czy_wstawiac_dwukropek;
end;
local pudelko_modul=require("Module:Pudełko");
local jezykowe_projekty=wiki_interwiki_modul.tablica_lokalne_lingwistyczne_siostrzane;
local projekty_nie_en=jezykowe_projekty[kod_projektu_uzyskany_poczatkowy];
local czy_kod_jezyka_uzyskany_poczatkowy=(kod_jezyka_uzyskany_poczatkowy~=kod_jezyka_tego_projektu);
local czy_kod_projektu_uzyskany_poczatkowy=(kod_projektu_uzyskany_poczatkowy~=kod_projektu_tego_projektu);
local html_modul=require("Module:Html");
local function AdresLinku()
local kody_poczatkowe=(not projekty_nie_en and (czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "") or(czy_kod_jezyka_uzyskany_poczatkowy and kod_jezyka_uzyskany_poczatkowy..":"..(czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "") or (czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "")));
local tablica_kodow=kody_poczatkowe..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "");
local czy_wstawiac_dwukropek=((tablica_kodow~="")and (projekty_nie_en and (czy_kod_jezyka_uzyskany_poczatkowy and ":" or "") or "") or (BiezacaWikiDwukropek() and ":" or ""));
local strona;local parametry;local naglowek;
if(czy_nazwa_strony_linku)then
strona=html_modul.EncodeElementyAdresuStrony(nazwa_strony_linku,nil,z_kodowaniem);
end;
if(czy_parametry_strony)then
parametry=html_modul.EncodeElementyAdresuStrony(parametry_strony,true,z_kodowaniem);
parametry="?"..parametry;
end;
if(czy_naglowek_strony)then
naglowek=html_modul.EncodeElementyAdresuStrony(naglowek_strony,nil,z_kodowaniem);
naglowek="#"..naglowek;
end;
local zmienna_linkowa=tablica_kodow..(strona or "") ..(parametry or "")..(naglowek or "");
return zmienna_linkowa, czy_wstawiac_dwukropek;
end;
nazwa=nazwa and mw.ustring.gsub(nazwa,"^[%s_]*","") or nil;
nazwa=nazwa and mw.ustring.gsub(nazwa,"[%s_]*$","") or nil;
--nazwa=nazwa and mw.ustring.gsub(nazwa,"[%s_]+"," ") or nil;
if(czy_ogolne and not czy_nazwa)then
if(parametry_modul.CzyTak(wyswietl))then
nazwa=strona_zmienna_tymczasowa;
czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
else
if((czy_pelna_nazwa_strony_prawidlowa)and(nazwastrony~=""))then
nazwa=nazwastrony;
else
nazwa=nazwy_modul["NAZWASTRONY"]{[1]=strona_zmienna_tymczasowa,["kod języka"]=kod_jezyka_uzyskany_poczatkowy,["kod projektu"]=kod_projektu_uzyskany_poczatkowy,};
end;
czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
end
end;
local zmienna_linkowa;
local aktywny;
if(not czy_wewnetrzny_z_fullurl)then
local czy_wstawiac_dwukropek;
zmienna_linkowa,czy_wstawiac_dwukropek=AdresLinku();
zmienna_linkowa=mw.ustring.gsub(zmienna_linkowa,"[%s_]+"," ");
local czy_za=parametry_modul.CzyTak(za);
if(czy_za or(nazwa and (nazwa~=zmienna_linkowa)))then
zmienna_linkowa="[["..czy_wstawiac_dwukropek..zmienna_linkowa..(czy_nazwa and "|"..nazwa..(czy_za and za or "") or (czy_za and ("|"..zmienna_linkowa..za) or "")).."]]"..(czy_po and po or "");
else
zmienna_linkowa="[["..czy_wstawiac_dwukropek..zmienna_linkowa.."]]"..(czy_po and po or "");
end
aktywny=false;
else
aktywny=true;
local serwer;
local projekt;
if(projekty_nie_en)then
for kod_specjalny_projektu,kod_projektu_interwiki in pairs(wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie)do
if(kod_projektu_uzyskany_poczatkowy==kod_projektu_interwiki)then
projekt=kod_specjalny_projektu;
end;
end;
end;
local function Protocol(kod_projektu)
local interwikimap=wiki_interwiki_modul.interwikimap;
local url=interwikimap[kod_projektu];
if(not url)then return "";end;
return mw.ustring.match(url,"^([^/]*)//");
end;
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local nazwy_np_modul=require("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
local czy_specjalna=(nazwaprzestrzeni==nazwy_np_modul.Special);
local ciag_tablica_kodow_zmienna_tymczasowa=mw.ustring.gsub(strona_zmienna_tymczasowa,"[%s_]+","_");
if(((projekt)and(czy_parametry_strony)and(czy_specjalna))or((projekt)and(wersja_linku=="w")))then
local adres=Protocol(kod_projektu_uzyskany_poczatkowy).."//"..kod_jezyka_uzyskany_poczatkowy.."."..projekt..".org/w/index.php?title="..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and "&"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za)and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((not projekty_nie_en)and(czy_parametry_strony)and(czy_specjalna))or((not projekty_nie_en)and(wersja_linku=="w")))then
local techniczne_modul=require("Module:Techniczne");
local wiki_nie_jezykowe=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane[kod_projektu_uzyskany_poczatkowy];
local serwer=mw.ustring.match(wiki_nie_jezykowe,"^([^/]*//[^/]*)")
local adres=serwer.."/w/index.php?title="..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and "&"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za)and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((projekt)and(czy_parametry_strony))or((projekt)and(wersja_linku=="wiki")))then
local strona_zmienna_tymczasowa,_=mw.ustring.gsub(strona_zmienna_tymczasowa,"[_%s]+","_");
local adres=Protocol(kod_projektu_uzyskany_poczatkowy).."//"..kod_jezyka_uzyskany_poczatkowy.."."..projekt..".org/wiki/"..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and " "..nazwa..(parametry_modul.CzyTak(za) and za or "") or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((not projekty_nie_en)and(czy_parametry_strony))or((not projekty_nie_en)and(wersja_linku=="wiki")))then
local wiki_nie_jezykowe=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane[kod_projektu_uzyskany_poczatkowy];
local strona_zmienna_tymczasowa,_=mw.ustring.gsub(ciag_tablica_kodow_zmienna_tymczasowa,"[_%s]+","_");
strona_zmienna_tymczasowa=((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..strona_zmienna_tymczasowa;
strona_zmienna_tymczasowa=html_modul.EncodeHtml(strona_zmienna_tymczasowa);
strona_zmienna_tymczasowa,_=mw.ustring.gsub(strona_zmienna_tymczasowa,"([%%])(%d+)","%%%%%2");
strona_zmienna_tymczasowa,_=mw.ustring.gsub(wiki_nie_jezykowe,"$1",strona_zmienna_tymczasowa);
local adres=strona_zmienna_tymczasowa..(czy_parametry_strony and "?"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
else
local pudelko_modul=require("Module:Pudełko");
zmienna_linkowa=(parametry_modul.CzyTak(klucz_projektu)and ((not(klucz_projektu==pudelko_modul["Klucz projektu tego projektu"]()))and (klucz_projektu..":")or "" )
or ((parametry_modul.CzyTak(kod_jezyka_uzyskany_poczatkowy)and ((not(kod_jezyka_uzyskany_poczatkowy==pudelko_modul["Kod języka tego projektu"]()))and(kod_jezyka_uzyskany_poczatkowy..":")or "") or "")..(parametry_modul.CzyTak(kod_projektu_uzyskany_poczatkowy)and ((not(kod_projektu_uzyskany_poczatkowy==pudelko_modul["Kod projektu tego projektu"]()))and(kod_projektu_uzyskany_poczatkowy..":")or "") or "")))
..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..strona_zmienna_tymczasowa;
local strona=(czy_parametry_strony and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
local adres=tostring(mw.uri.fullUrl(zmienna_linkowa))..strona;
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
end;
end;
return zmienna_linkowa,kod_jezyka_koncowy,kod_projektu_koncowy,strona_zmienna_tymczasowa,czy_naglowek_strony,aktywny;
else
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local czy_nazwa;
if(not nazwa)then
nazwa=mw.ustring.match(nazwa_strony_linku,"//[^/]*/(.*)$");
nazwa=html_modul.DecodeHtml(nazwa);
czy_nazwa=parametry_modul.CzyTak(nazwa);
else
czy_nazwa=parametry_modul.CzyTak(nazwa);
end;
local czy_po=parametry_modul.CzyTak(po);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
nazwa_strony_linku=mw.ustring.gsub(nazwa_strony_linku,"[%s_]+","_");
nazwa_strony_linku=mw.ustring.gsub(nazwa_strony_linku,"//([^/]*)/(.*)$", function(s1,s2)return "//"..s1.."/"..html_modul.EncodeHtml(s2);end)
local adres=nazwa_strony_linku..(czy_parametry_strony and "?"..html_modul.EncodeParametryHtml(parametry_strony) or "")
..(czy_naglowek_strony and "#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony)) or "");
local zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
return zmienna_linkowa,nil,nil,nazwa_strony_linku,czy_naglowek_strony,false;
end;
end;
function p.TworzLinkBezPrzetwarzania(klucz_projektu,kod_jezyka,kod_projektu,strona,naglowek,nazwa,za,po,z_kodowaniem)
local parametry_modul=require("Module:Parametry");
local adres=(parametry_modul.CzyTak(klucz_projektu)and (klucz_projektu..":")
or ((parametry_modul.CzyTak(kod_jezyka)and (kod_jezyka..":") or "")..(parametry_modul.CzyTak(kod_projektu)and (kod_projektu..":") or "")))
..strona..(parametry_modul.CzyTak(naglowek) and ("#"..naglowek) or "");
local html_modul=require("Module:Html");
adres=html_modul.AdresProjektuEncodeHtml(adres,z_kodowaniem);
local wartosc="[[:"..adres..(parametry_modul.CzyTak(nazwa) and ("|"..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and ("|"..adres..za) or "")).."]]"..(po and po or "");
return wartosc;
end;
function p.LinkWikidane(link,klucz_projektu,kod_jezyka,kod_projektu,strona,czy_naglowek,czy_url,czy_parametry,aktywny)
local wiki_modul=require("Module:Wiki");
local klasa=wiki_modul.KodyKlasStronyNaDanejWiki{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["strona"]=strona,["nagłówek"]=czy_naglowek,["url"]=czy_url,["parametry"]=czy_parametry,["aktywny"]=aktywny,};
local nazwy_modul=require("Module:Nazwy");
local spanramka=mw.html.create('span');
spanramka:addClass(klasa);
spanramka:addClass("link");
local max_len_link=0;
local iter=mw.ustring.gmatch(link,"%a+");
for value in iter do max_len_link=math.max(max_len_link,#value);end;
if(max_len_link>=20)then spanramka:addClass("link-ogromne");end;
spanramka:wikitext(link);
return tostring(spanramka:allDone());
end;
function p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem)
local parametry_modul=require("Module:Parametry");
parametry_strony=czy_wewnetrzny_z_fullurl and parametry_strony or nil;
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local html_modul=require("Module:Html");
nazwa_strony_linku=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony_linku);
local wartosc_parent,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,czy_naglowek_strony,aktywny=p.TworzenieWikiLinku(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,z_kodowaniem);
if(parametry_modul.CzyTak(bez_znacznikow))then return wartosc_parent;end;
return p.LinkWikidane(wartosc_parent,nil,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,czy_naglowek_strony,czy_url,czy_parametry_strony,aktywny);
end;
function p.RozwinKreskaPoziomowa(miano_przestrzeni_nazw,nazwa_strony_linku,naglowek,czy_link_url,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,tabela_nazw,__FUNKCJA)
local nowa_nazwa_strony_linku;
local czy_kreska_dolna;local hash;local prze_nie_main;
local czy_strona_lokalna;
if(not czy_analiza)then
czy_kreska_dolna=mw.ustring.match(nazwa_strony_linku,"^[%s_:]*$") or mw.ustring.match(nazwa_strony_linku,":[%s_]*$");
hash=(not czy_kreska_dolna)and ((not czy_link_url) and mw.ustring.match(nazwa_strony_linku,"^[_%s]*#(.*)$") or nil) or (((czy_kreska_dolna)and(czy_link_url) and require("Module:Parametry").CzyTak(naglowek)) and naglowek or nil);
if((czy_kreska_dolna)or(hash))then
local wiki_modul=require("Module:Wiki");
local nazwy_modul=require("Module:Nazwy");
local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local miano_przestrzeni_nazw_maly=((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~=""))and mw.ustring.lower(miano_przestrzeni_nazw) or miano_przestrzeni_nazw;
if((not miano_przestrzeni_nazw_maly)or((miano_przestrzeni_nazw_maly=="")or(miano_przestrzeni_nazw_maly=="(main)")or(miano_przestrzeni_nazw_maly=="(główna)")))then
miano_przestrzeni_nazw=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_strony_linku,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,},tabela_nazw);
end;
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({nazwa=nazwa_strony_linku,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,},tabela_nazw);
if(nazwa_strony=="")then
nowa_nazwa_strony_linku,czy_strona_lokalna=p["PrzetłumaczZnakZastępczyNaStronę"](miano_przestrzeni_nazw or "","",kod_jezyka,kod_projektu,hash);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
nowa_nazwa_strony_linku=__FUNKCJA(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main);
return nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna;
end;
p["GanerujSkładoweURL"] = function(args)
local klucz_projektu_do_projektu_linku;
local kod_jezyka_do_projektu_linku;
local kod_projektu_do_projektu_linku;
local miano_przestrzeni_nazw;
local nazwa_strony_linku=args["strona"] or args["s"] or "_";
local html_modul=require("Module:Html");
nazwa_strony_linku=nazwa_strony_linku and html_modul.DecodeHtml(nazwa_strony_linku) or nil;
local parametry_modul=require("Module:Parametry");
local w=args["wersja linku"] or args["w"];
local tab_w={
["w"]=true,
["wiki"]=true,
};
local wersja_linku=parametry_modul.CzyTak(w) and (tab_w[w] and w or nil) or "";
local _;
local strony_modul=require("Module:Strony");
local czy_url=strony_modul.SprawdzanieURL(nazwa_strony_linku);
local parametry_strony;local naglowek_strony;local nazwa;local po;local po;local za;
nazwa=args["nazwa"] or args["n"];
po=args["po"] or args["p"];
za=args["za"] or args["z"];
local function DaneStrony(nazwa_strony_linku_parametr,adres)
if(parametry_modul.CzyTak(nazwa_strony_linku_parametr))then
if(mw.ustring.match(nazwa_strony_linku_parametr,"^/wiki/"))then
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/wiki/","");
local tabela_nazw_adresu={};
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
elseif(mw.ustring.match(nazwa_strony_linku_parametr,"^/w/"))then
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/w/","");
local tabela_nazw_adresu={};
local html_modul=require("Module:Html");
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
local nazwa_strony_jednostki,parametry_strony_jednostki=html_modul["NazwaStronyZParametrówStronyAdresu"](parametry_strony,true);
parametry_strony=parametry_strony_jednostki or parametry_strony;
nazwa_strony_linku_parametr=nazwa_strony_jednostki or nazwa_strony_linku_parametr;
else
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/(.*)$","%1");
local tabela_nazw_adresu={};
local html_modul=require("Module:Html");
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
end;
else
if((parametry_modul.CzyTak(kod_jezyka_do_projektu_linku))or(parametry_modul.CzyTak(kod_projektu_do_projektu_linku)))then
if((not adres)or(mw.ustring.match(adres,"/$1$")))then
local pudelko_modul=require("Module:Pudełko");
nazwa_strony_linku_parametr=pudelko_modul["Nazwa strony głównej projektu 2"]{[1]=kod_jezyka_do_projektu_linku,[2]=kod_projektu_do_projektu_linku,} or "";
end;
end;
end;
parametry_strony=parametry_modul.CzyTak(parametry_strony) and parametry_strony or (args["parametry"] or args["c"]);
naglowek_strony=parametry_modul.CzyTak(naglowek_strony) and naglowek_strony or (args["nagłówek"] or args["g"]);
local biezaca=args["bieżąca"] or args["b"];
local czy_biezaca=parametry_modul.CzyTak(biezaca);
nazwa=nazwa or (czy_biezaca and naglowek_strony or nil);
--nazwa=args["nazwa"] or args["n"];
local klucz_projektu_do_projektu_linku_temp=args["klucz projektu"] or args["k"];
klucz_projektu_do_projektu_linku=parametry_modul.CzyTak(klucz_projektu_do_projektu_linku_temp) and (klucz_projektu_do_projektu_linku_temp) or klucz_projektu_do_projektu_linku;
local kod_jezyka_do_projektu_linku_temp=args["kod języka"] or args["kj"];
kod_jezyka_do_projektu_linku=parametry_modul.CzyTak(kod_jezyka_do_projektu_linku_temp) and (kod_jezyka_do_projektu_linku_temp) or kod_jezyka_do_projektu_linku;
local kod_projektu_do_projektu_linku_temp=args["kod projektu"] or args["kp"];
kod_projektu_do_projektu_linku=parametry_modul.CzyTak(kod_projektu_do_projektu_linku_temp) and (kod_projektu_do_projektu_linku_temp) or kod_projektu_do_projektu_linku;
nazwa_strony_linku=nazwa_strony_linku_parametr;
czy_url=false;
end;
if(not czy_url)then
local miano_przestrzeni_nazw=args["miano przestrzeni nazw"] or args["przestrzeń"] or args["f"];
nazwa_strony_linku=parametry_modul["CzyTakCiąg"](miano_przestrzeni_nazw) and miano_przestrzeni_nazw..":"..nazwa_strony_linku or nazwa_strony_linku;
DaneStrony(nazwa_strony_linku);
else
local html_modul=require("Module:Html");
local nazwa_strony_bez_protokolu=html_modul["UrlBezProtokołu"](nazwa_strony_linku);
local serwer,nazwa_strony=html_modul["URLStrona"](nazwa_strony_bez_protokolu);
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local function SerwerWiki(serwer)
local kod_jezyka_zmienna_tymczasowa,kod_specjalny_projektu=mw.ustring.match(serwer,"^(%w+)%.(%w+)%.org");
if((not kod_jezyka_zmienna_tymczasowa)or(not kod_specjalny_projektu))then
kod_jezyka_zmienna_tymczasowa,kod_specjalny_projektu=mw.ustring.match(serwer,"^(%w+)%.[mM]%.(%w+)%.org");
end;
local interwikisiostrzaneangielskie=wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie;
local kod_projektu=interwikisiostrzaneangielskie[kod_specjalny_projektu];
local kod_jezyka=kod_jezyka_zmienna_tymczasowa and (mw.language.isKnownLanguageTag(kod_jezyka_zmienna_tymczasowa) and kod_jezyka_zmienna_tymczasowa or nil) or nil;
return kod_jezyka,kod_projektu;
end;
local function JezykoweLubAngielskieProjekty(serwer_portalu)
local kod_jezyka,kod_projektu=SerwerWiki(serwer_portalu);
if(kod_jezyka and kod_projektu)then
kod_jezyka_do_projektu_linku=kod_jezyka;
kod_projektu_do_projektu_linku=kod_projektu;
klucz_projektu_do_projektu_linku=nil;
DaneStrony(nazwa_strony);
return true;
else
local pozajezykoweprojektysiostrzane=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane;
local techniczne_modul=require("Module:Techniczne");
for kod, url in pairs(pozajezykoweprojektysiostrzane)do
local adres=html_modul["UrlBezProtokołu"](url);
local serwer_portalu,nazwa_strony_portalu=html_modul["URLStrona"](adres);
if(serwer_portalu)then
if((serwer_portalu==serwer)and((mw.ustring.match(nazwa_strony_portalu,"%$1"))or(nazwa_strony==nazwa_strony_portalu)))then
kod_jezyka_do_projektu_linku=kod_jezyka or "en";
kod_projektu_do_projektu_linku=--[[kod_projektu or]] kod;
local nazwa_strony_spreparowana=nil;
if(not mw.ustring.match(adres,"/wiki/%$1$"))then
if(mw.ustring.match(url,"[:/]$1$"))then
local url_wzor=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](adres);
url_wzor=mw.ustring.gsub(url_wzor,"(%%$1)$","(.-)");
nazwa_strony_spreparowana=mw.ustring.match(nazwa_strony_bez_protokolu,"^"..url_wzor.."$");
if(not nazwa_strony_spreparowana)then
return false;
end;
end;
end;
DaneStrony(nazwa_strony_spreparowana or nazwa_strony,adres);
return true;
end;
end;
end;
end;
end;
local function __FUNKCJA()
if(mw.ustring.match(serwer,"^upload%.wikimedia%.org$"))then
DaneStrony(nazwa_strony);
nazwa_strony=nazwa_strony_linku;
nazwa_strony_linku="Media:"..mw.ustring.match(nazwa_strony,"([^/]*)$");
local kod_projektu_do_projektu_linku2,kod_jezyka_do_projektu_linku2=mw.ustring.match(nazwa_strony,"^([^/]*)/([^/]*)/.*$");
kod_jezyka_do_projektu_linku=kod_jezyka_do_projektu_linku or kod_jezyka_do_projektu_linku2;
kod_projektu_do_projektu_linku=kod_projektu_do_projektu_linku or kod_projektu_do_projektu_linku2;
czy_url=false;
else
local juz_tak=JezykoweLubAngielskieProjekty(serwer);
if(not juz_tak)then
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
naglowek_strony=parametry_modul.CzyTak(naglowek_strony) and naglowek_strony or (args["nagłówek"] or args["g"]);
local biezaca=args["bieżąca"] or args["b"];
local czy_biezaca=parametry_modul.CzyTak(biezaca);
nazwa=nazwa or (czy_biezaca and naglowek_strony or nil);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
parametry_strony=parametry_modul.CzyTak(parametry_strony) and parametry_strony or (args["parametry"] or args["c"]);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
end;
end;
end;
__FUNKCJA();
end;
local czy_wewnetrzny_z_fullurl;
if(not parametry_modul.CzyTak(parametry_strony))then
if(wersja_linku=="")then
if((klucz_projektu_do_projektu_linku)or(kod_jezyka_do_projektu_linku)or(kod_projektu_do_projektu_linku))then
czy_wewnetrzny_z_fullurl=false;
elseif(not czy_url)then
czy_wewnetrzny_z_fullurl=false;
else
czy_wewnetrzny_z_fullurl=true;
end;
else
czy_wewnetrzny_z_fullurl=true;
end;
else
czy_wewnetrzny_z_fullurl=true;
end;
return klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url;
end;
p["Link wewnętrzny"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local klucz_projektu_do_projektu_linku=args["klucz projektu"] or args["k"];
local kod_jezyka_do_projektu_linku=args["kod języka"] or args["kj"];
local kod_projektu_do_projektu_linku=args["kod projektu"] or args["kp"];
local nazwa_strony_linku=args["strona"] or args["s"] or "_";
local nazwa=args["nazwa"] or args["n"];
local czy_nazwa=parametry_modul.CzyTak(nazwa);
nazwa=czy_nazwa and nazwa or nil;
local po=args["po"] or args["p"];
local za=args["za"] or args["z"];
local naglowek_strony=args["nagłówek"] or args["g"];
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"] or args["bz"]);
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"] or args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]or args["bk"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"] or args["u"]);
local czy_analiza=parametry_modul.CzyTak(args["analiza"] or args["a"]);
local czy_naglowek=parametry_modul.CzyTak(naglowek_strony);
local hash;local czy_kreska_dolna;local prze_nie_main;local czy_strona_lokalna;local nowa_nazwa_strony_linku;
if(not czy_analiza)then
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa("",nazwa_strony_linku,naglowek_strony,czy_naglowek,nil,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,{},function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
return nowa_nazwa_strony_linku;
end);
nazwa=czy_nazwa and nazwa or (hash and ("#"..hash) or nil);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (((not czy_naglowek)and(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$")))or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*#(.*)$")))) or nil);
if(not bez_przetwarzania)then
return p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek and naglowek_strony or hash,nazwa,za,po,nil,nil,nil,nil,nil,nil,nil,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
else
local link=p.TworzLinkBezPrzetwarzania(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,(not czy_strona_lokalna) and nowa_nazwa_strony_linku or (hash and "" or nowa_nazwa_strony_linku),czy_naglowek and naglowek_strony or hash,nazwa,za,po,z_kodowaniem);
if(not bez_znacznikow)then
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek_strony or hash or mw.ustring.match(nazwa_strony_linku,"#"),nil,nil);
else
return link;
end;
end;
end;
p["LinkURL"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local linki_modul=require("Module:Linki");
local klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url=linki_modul["GanerujSkładoweURL"](args);
local czy_analiza=parametry_modul.CzyTak(args["analiza"]) or parametry_modul.CzyTak(args["a"]);
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"]) or parametry_modul.CzyTak(args["bz"]);
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"]) or parametry_modul.CzyTak(args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]) or parametry_modul.CzyTak(args["bk"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"]) or parametry_modul.CzyTak(args["u"]);
local czy_naglowek=parametry_modul.CzyTak(naglowek_strony);
local hash;local czy_kreska_dolna;local prze_nie_main;local czy_strona_lokalna;local nowa_nazwa_strony_linku;
if((not czy_analiza)and(not czy_url))then
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa("",nazwa_strony_linku,naglowek_strony,czy_naglowek,nil,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,{},function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
return nowa_nazwa_strony_linku;
end);
nazwa=parametry_modul.CzyTak(nazwa) and nazwa or (hash and ("#"..hash) or nil);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$"))) or nil);
local function Bez_przetwarzania_lub_bez_znaczkow()
if(parametry_modul.CzyTak(bez_przetwarzania))then
local bez_znacznikow=parametry_modul.CzyTak(bez_znacznikow);
local czy_parametry=parametry_modul.CzyTak(parametry_strony);
local wartosc=((not czy_url)and((parametry_modul.CzyTak(klucz_projektu_do_projektu_linku)and (klucz_projektu_do_projektu_linku..":")
or ((parametry_modul.CzyTak(kod_jezyka_do_projektu_linku)and (kod_jezyka_do_projektu_linku..":") or "")..(parametry_modul.CzyTak(kod_projektu_do_projektu_linku)and (kod_projektu_do_projektu_linku..":") or "")))..nowa_nazwa_strony_linku) or nil);
local link;
local po_linku=parametry_modul.CzyTak(po) and po or "";
if((not czy_url)and((czy_parametry)or(parametry_modul.CzyTak(wersja_linku))))then
local adres=tostring(mw.uri.fullUrl(wartosc,""));
adres=((not parametry_modul.CzyTak(wersja_linku))or(wersja_linku=="wiki")) and adres or mw.ustring.gsub(adres,"/wiki/","/w/index.php?title=",1);
local html_modul=require("Module:Html");
local parametry_i_naglowek=((czy_parametry)and ((((wersja_linku=="w")) and "&" or "?")..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "")
adres=adres..parametry_i_naglowek;
link= "["..adres..(parametry_modul.CzyTak(nazwa) and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or (" "..nowa_nazwa_strony_linku))).."]"..po_linku;
elseif(czy_url)then
local html_modul=require("Module:Html");
local parametry_i_naglowek=((czy_parametry)and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "")
local adres=nowa_nazwa_strony_linku..parametry_i_naglowek;
link= "["..adres..(parametry_modul.CzyTak(nazwa) and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or (" "..nowa_nazwa_strony_linku))).."]"..po_linku;
else
local naglowek=(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "");
local adres=wartosc..naglowek;
link="[[:"..adres..((parametry_modul.CzyTak(nazwa)) and ("|"..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and ("|"..adres..za) or "")).."]]"..po_linku;
end;
if not bez_znacznikow then
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek_strony,czy_url,czy_parametry_strony);
else
return link;
end;
end;
end;
local wynik=Bez_przetwarzania_lub_bez_znaczkow();if(wynik)then return wynik;end;
return linki_modul.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,nil,nil,nil,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
end;
function p.UzyskajKodWikiLinku(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local linki_modul=require("Module:Linki");
local klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url=linki_modul["GanerujSkładoweURL"](args);
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local pudelko_modul=require("Module:Pudełko");
kod_jezyka_koncowy=parametry_modul.CzyTak(kod_jezyka_koncowy) and kod_jezyka_koncowy or pudelko_modul["Kod języka tego projektu"]();
kod_projektu_koncowy=parametry_modul.CzyTak(kod_projektu_koncowy) and kod_projektu_koncowy or pudelko_modul["Kod projektu tego projektu"]();
local aktywny;
local czy_nazwa=parametry_modul.CzyTak(nazwa_strony_linku);
if(not czy_nazwa or not mw.ustring.match(nazwa_strony_linku,"_+"))then
if((not czy_nazwa)and((not kod_jezyka_koncowy)or(kod_jezyka_koncowy==pudelko_modul["Kod języka tego projektu"]()))and((not kod_projektu_koncowy)or(kod_projektu_koncowy==pudelko_modul["Kod projektu tego projektu"]())))then
if((parametry_modul.CzyTak(naglowek_strony)) or (not args["strona"] or args["strona"]=="") or ((args["strona"])and(mw.ustring.match(args["strona"],"^[_%s]*#[_%s]*$"))or(nil)))then
aktywny=false;
local nazwy_modul=require("Module:Nazwy");
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]();
end;
else
aktywny=true;
end;
else
aktywny=true;
local pudelko_modul=require("Module:Pudełko");
nazwa_strony_linku=pudelko_modul["Strona główna tego projektu"]();
end;
local nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy);
---
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_pusta_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
if(not czy_pusta_nazwa_strony_linku)then
local linki_modul=require("Module:Linki");
nazwa_strony_linku,_=linki_modul["PrzetłumaczZnakZastępczyNaStronę"]("","",kod_jezyka_koncowy,kod_projektu_koncowy,czy_naglowek_strony);
end;
----
local klasa=wiki_modul.KodyKlasStronyNaDanejWiki{["klucz projektu"]=nil,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["strona"]=nazwa_strony_linku,["nagłówek"]=czy_naglowek_strony,["url"]=czy_url,["parametry"]=czy_parametry_strony,["aktywny"]=aktywny,};
return klasa;
end;
p["LinkOgólne"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local miano_przestrzeni_nazw=args["miano przestrzeni nazw"] or args["przestrzeń"] or args["f"];
local czy_dyskusja=parametry_modul.CzyTak(args["dyskusja"] or args["d"]);
local klucz_projektu_do_projektu_linku=args["klucz projektu"] or args["k"];
local kod_jezyka_do_projektu_linku=args["kod języka"] or args["kj"];
local kod_projektu_do_projektu_linku=args["kod projektu"] or args["kp"];
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"]) or parametry_modul.CzyTak(args["bz"]);
local wyswietl_miano_przestrzeni_nazw=args["wyświetl miano przestrzeni nazw"] or args["wyświetl"] or args["w"];
local nazwa_strony_linku=args[1] or "_";
local czy_nazwa=parametry_modul.CzyTak(args[2]);
local czy_analiza=parametry_modul.CzyTak(args["analiza"]) or parametry_modul.CzyTak(args["a"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"]) or parametry_modul.CzyTak(args["u"]);
local nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna;
local czy_niepusta_nazwa_przestrzeni_nazw;
local nazwy_modul=require("Module:Nazwy");
local czy_aktualna_wiki;
if(not czy_analiza)then
local tabela_nazw={};
miano_przestrzeni_nazw=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or "";
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa(miano_przestrzeni_nazw,nazwa_strony_linku,nil,nil,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,tabela_nazw,function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
if(czy_dyskusja)then
local tabela_nazw_temp={};tabela_nazw_temp.czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;
nowa_nazwa_strony_linku=nazwy_modul["NAZWASTRONYDYSKUSJI"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["bez zmiany adresu"]="tak",},tabela_nazw_temp);
end;
return nowa_nazwa_strony_linku;
end);
czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
local tabela_nazw={};tabela_nazw.czy_aktualna_wiki=czy_aktualna_wiki;
local czy_biezaca;
local czy_nazwa_strony_pusta;
local wiki_modul=require("Module:Wiki");
if((czy_dyskusja)or(czy_analiza))then
czy_nazwa_strony_pusta=mw.ustring.match(nazwa_strony_linku,"^[%s_:]*$");
if((not czy_nazwa_strony_pusta)or((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~="")))then
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
local nazwy_modul=require("Module:Nazwy");
if(czy_biezaca)then
miano_przestrzeni_nazw=nazwy_modul[((czy_dyskusja)and(czy_analiza)) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"](nowa_nazwa_strony_linku,tabela_nazw);
else
miano_przestrzeni_nazw=nazwy_modul[((czy_dyskusja)and(czy_analiza)) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
end;
czy_niepusta_nazwa_przestrzeni_nazw=parametry_modul.CzyTak(miano_przestrzeni_nazw);
end;
elseif(hash or czy_kreska_dolna)then
czy_niepusta_nazwa_przestrzeni_nazw=true;
elseif(not prze_nie_main)then
miano_przestrzeni_nazw="";
czy_niepusta_nazwa_przestrzeni_nazw=false;
else
miano_przestrzeni_nazw=prze_nie_main;
czy_niepusta_nazwa_przestrzeni_nazw=true;
end;
local techniczne_modul=require("Module:Techniczne");
local czy_wyswietl_miano_przestrzeni_nazw=parametry_modul.CzyTak(wyswietl_miano_przestrzeni_nazw);
local function NazwaLinkuDoStrony()
local function CzyPrzestrzen(miano_przestrzeni_nazw)
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
local miano_przestrzeni_nazw;
if(czy_biezaca)then
miano_przestrzeni_nazw=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
miano_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or miano_przestrzeni_nazw;
end;
return miano_przestrzeni_nazw;
end;
local function Nazwa2(nazwa,czy_wyswietl_miano_przestrzeni_nazw)
if(czy_wyswietl_miano_przestrzeni_nazw)then
return nazwa;
else
nazwa=nazwy_modul["NAZWASTRONY"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
if(tabela_nazw.m)then
nazwa=mw.getContentLanguage():lcfirst(nazwa);
end;
return nazwa;
end;
end;
local function Nazwa(nazwa)
local ile;local ile2=0;
if((czy_analiza) and (not bez_przetwarzania))then
nazwa=techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa) or nazwa;
nazwa,ile=mw.ustring.gsub(nazwa,"^[%s_:]*(.+)[%s_:]*:[%s_]*$",function(nazwaprzestrzeni)
local nazwa_przestrzeni=CzyPrzestrzen(nazwaprzestrzeni)
if(nazwa_przestrzeni)then
return nazwa_przestrzeni..":".."%s";
end;
ile2=ile+1;
end);
else
nazwa,ile=mw.ustring.gsub(nazwa,"^[%s_:]*(.+)[%s_:]*:[%s_]*$",function(nazwaprzestrzeni)
local nazwa_przestrzeni=CzyPrzestrzen(nazwaprzestrzeni)
if(nazwa_przestrzeni)then
return nowa_nazwa_strony_linku;
end;
ile2=ile2+1;
end);
end;
if(ile-ile2==0)then
return Nazwa2(nazwa,czy_wyswietl_miano_przestrzeni_nazw);
else
return nazwa;
end;
end;
local function NazwaFormat(wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta)
if((not czy_analiza)or(bez_przetwarzania))then return nil;end;
if(czy_wyswietl_miano_przestrzeni_nazw)then
if(czy_nazwa_strony_pusta)then
if(not miano_przestrzeni_nazw)then
return "%s:%s";
else
return miano_przestrzeni_nazw..((miano_przestrzeni_nazw~="") and ":" or "").."%s";
end;
end;
else
if(czy_nazwa_strony_pusta)then
return "%s";
end;
end;
end;
if(czy_niepusta_nazwa_przestrzeni_nazw)then
if(czy_wyswietl_miano_przestrzeni_nazw)then
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
nazwa_strony_linku=((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa_strony_linku) or nazwa_strony_linku;
if((czy_nazwa_strony_pusta)and(czy_analiza)and(not bez_przetwarzania))then nazwa_strony_linku="%s";end;
----
local aliases;
local alias=args["alias miana przestrzeni nazw"] or args["alias"] or args["i"];
local czy_alias=parametry_modul.CzyTak(alias);
if(czy_alias)then
if((not czy_dyskusja)and(not czy_analiza))then
local wiki_modul=require("Module:Wiki");
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
end;
if(czy_biezaca)then
local uchwyt=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,uchwyt="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak"}
if(uchwyt)then
aliases=uchwyt.aliases;
--miano_przestrzeni_nazw=uchwyt.name;
end;
else
local uchwyt=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,uchwyt="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(uchwyt)then
if(parametry_modul.TypeTable(uchwyt))then
aliases=uchwyt.aliasy;
--miano_przestrzeni_nazw=uchwyt[1];
else
--miano_przestrzeni_nazw=uchwyt;
aliases={};
end;
end;
end;
end;
----
if((czy_alias)and(parametry_modul.CzyTak(aliases)))then
if(parametry_modul["CzySąElementyNumerowaneTablicy"](aliases))then
alias=mw.getContentLanguage():uc(alias);
for _,value in pairs(aliases)do
if((mw.getContentLanguage():uc(value))==alias)then
return alias..":"..nazwa_strony_linku;
end;
end;
end;
end;
if(not miano_przestrzeni_nazw)then return nil;end;
local miano_przestrzeni_nazw_zmienna_tymczasowa;
if(czy_biezaca)then
miano_przestrzeni_nazw_zmienna_tymczasowa=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
nazwa_strony_linku=((miano_przestrzeni_nazw_zmienna_tymczasowa)and(not czy_nazwa_strony_pusta)and(not prze_nie_main)) and nazwy_modul["NAZWASTRONY"](nowa_nazwa_strony_linku,tabela_nazw) or nazwa_strony_linku;
else
miano_przestrzeni_nazw_zmienna_tymczasowa=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or miano_przestrzeni_nazw;
nazwa_strony_linku=((miano_przestrzeni_nazw_zmienna_tymczasowa)and(not czy_nazwa_strony_pusta)and(not prze_nie_main)) and nazwy_modul["NAZWASTRONY"]{nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,tabela_nazw} or nazwa_strony_linku;
end;
if(not miano_przestrzeni_nazw_zmienna_tymczasowa)then return nil;end;
return ((miano_przestrzeni_nazw_zmienna_tymczasowa~="") and (miano_przestrzeni_nazw_zmienna_tymczasowa..":") or "")..((((czy_analiza)and(not bez_przetwarzania))and(nazwa_strony_linku=="")) and "%s" or nazwa_strony_linku);
else
local nazwa=hash and("#"..hash) or nowa_nazwa_strony_linku;
nazwa=((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa) or nazwa;
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
else
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
if((czy_nazwa_strony_pusta)and((czy_analiza)and(not bez_przetwarzania)))then
return "%s";
end;
local nazwa=nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
else
if((czy_nazwa_strony_pusta)and((czy_analiza)and(not bez_przetwarzania)))then
return "%s";
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa=hash and ("#"..hash) or nazwy_modul["NAZWASTRONY"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
end;
else
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
local wynik_nazwa=NazwaFormat(czy_wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta);
if(wynik_nazwa)then return wynik_nazwa;end;
local nazwa=nowa_nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
else
if(czy_nazwa_strony_pusta)then
local wynik_nazwa=NazwaFormat(czy_wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta);
if(wynik_nazwa)then return wynik_nazwa;end;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa=hash and("#"..hash) or nowa_nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
end;
end;
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"]) or parametry_modul.CzyTak(args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]) or parametry_modul.CzyTak(args["bk"]);
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~=""))or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$")or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*#(.*)$"))))) or nil);
local nazwa=czy_nazwa and (args[2] and (((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](args[2]) or args[2]) or nil) or NazwaLinkuDoStrony();
local po=args["po"] or args["p"];
local za=args["za"] or args["z"];
if(not bez_przetwarzania)then
return p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,hash,nazwa,za,po,false,nil,nil,nil,true,wyswietl_miano_przestrzeni_nazw,czy_dyskusja,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
else
local link=p.TworzLinkBezPrzetwarzania(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,(not czy_strona_lokalna) and nowa_nazwa_strony_linku or (hash and "" or nowa_nazwa_strony_linku),hash,nazwa,za,po,z_kodowaniem);
if(not bez_znacznikow)then
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,hash or ((not czy_kreska_dolna) and mw.ustring.match(nazwa_strony_linku,"#") or nil),nil,nil);
else
return link;
end;
end;
end;
function p.ZamianaKategoriiNaLinki(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=wm.loadData("Module:Nazwy/Np");
local kategoria_polska=nazwy_np_modul.Category;
local wzor_kategorii_polskiej=techniczne_modul["WzórDanejPrzestrzeniNazw"](kategoria_polska)
tekst=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1|%2]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1|%2]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1]]");
return tekst;
end;
return p;
apiqfrgyulbbds48v5siz9klr3iscxu
546519
546515
2026-06-12T11:14:15Z
Persino
2851
546519
Scribunto
text/plain
local p={};
p["PrzetłumaczZnakZastępczyNaStronę"]=function(nazwa_przestrzeni_nazw,nazwa_strony,kod_jezyka,kod_projektu,hash)
local czy_pusta_nazwa_przestrzeni_nazw=mw.ustring.match(nazwa_przestrzeni_nazw,"^([%s_:]*)$");
local czy_pusta_nazwa_strony=mw.ustring.match(nazwa_strony,"^([%s_:]*)#.*$") or mw.ustring.match(nazwa_strony,"^([%s_:]*)$");
if(not czy_pusta_nazwa_przestrzeni_nazw and czy_pusta_nazwa_strony)then
local tabglownestronyprojektu=mw.loadData("Module:Nazwy/przestrzenie").tabnp;
local parametry_modul=require("Module:Parametry");
nazwa_przestrzeni_nazw=parametry_modul["Odstępy"](nazwa_przestrzeni_nazw);
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
if(not czy_biezaca)then
local nazwy_modul=require("Module:Nazwy");
local wiki_modul=require("Module:Wiki");
local nazwa_kanoniczna_nazwy_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["przedmiotowa"]="tak",["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",}
local nazwa_bazowa_strony=tabglownestronyprojektu[nazwa_kanoniczna_nazwy_przestrzeni_nazw];
if(nazwa_bazowa_strony)then
local nazwa_strony_na_innym_projekcie=wiki_modul.WikidaneOdpowiednikStrony{
["nazwa strony"]=nazwa_bazowa_strony,
["kod języka"]=kod_jezyka,
["kod projektu"]=kod_projektu,
["kod języka bazy"]="pl",
["kod projektu bazy"]=(nazwa_kanoniczna_nazwy_przestrzeni_nazw~="Project")and "w" or "b",
}
if(nazwa_strony_na_innym_projekcie)then
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({["nazwa"]=nazwa_strony_na_innym_projekcie,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu});
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
else
return nazwa_bazowa_strony,false;
end;
end;
else
local nazwy_modul=require("Module:Nazwy");
if(hash)then
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local prze_bierzacej_strony=nazwy_modul["NAZWAPRZESTRZENI"](nil,tabela_nazw);
local nazwa_przestrzeni_nazw=nazwy_modul.Np{nazwa=nazwa_przestrzeni_nazw,};
if(nazwa_przestrzeni_nazw==prze_bierzacej_strony)then
return nazwy_modul["PEŁNANAZWASTRONY"](nil,tabela_nazw),true;
end;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_kanoniczna_nazwy_przestrzeni_nazw=nazwy_modul.Np{["nazwa"]=nazwa_przestrzeni_nazw,["kanoniczna"]="tak",["przedmiotowa"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak"}
local nazwa_strony_glownych_stron_projektu=tabglownestronyprojektu[nazwa_kanoniczna_nazwy_przestrzeni_nazw];
if(nazwa_strony_glownych_stron_projektu)then
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({["nazwa"]=nazwa_strony_glownych_stron_projektu});
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
end;
end;
elseif czy_pusta_nazwa_przestrzeni_nazw and czy_pusta_nazwa_strony then
local wiki_modul=require("Module:Wiki");
local czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,}
if((czy_biezaca)and(hash))then
local nazwy_modul=require("Module:Nazwy");
return nazwy_modul["PEŁNANAZWASTRONY"](),true;
end;
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local tablokalnesiostrzane=wiki_interwiki_modul.tablica_lokalne_siostrzane;
if(tablokalnesiostrzane[kod_projektu])then
local wiki_modul=require("Module:Wiki");
local pudelko_modul=require("Module:Pudełko");
local strona_glowna_tego_projektu=pudelko_modul["Strona główna tego projektu"]();
if(not czy_biezaca)then
local nazwa_strony_glownej_na_innym_projekcie=wiki_modul.WikidaneOdpowiednikStrony{
["nazwa strony"]=strona_glowna_tego_projektu,
["kod języka"]=kod_jezyka,
["kod projektu"]=kod_projektu,
}
if(nazwa_strony_glownej_na_innym_projekcie)then
return nazwa_strony_glownej_na_innym_projekcie,false;
end;
else
return strona_glowna_tego_projektu,false;
end;
end;
end;
return ((nazwa_przestrzeni_nazw~="")and (nazwa_przestrzeni_nazw..":") or "")..nazwa_strony,false;
end;
p["PoprawLinki"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local argument_pierwszy=PobierzParametr(1);
local z_kodowaniem=PobierzParametr("uri") or PobierzParametr(2);
z_kodowaniem=parametry_modul.CzyTak(z_kodowaniem);
local function pojedynczy_link(link)
local strona=mw.ustring.match(link,"^%[%[:?([^%[%]|]*)");
local nazwa=mw.ustring.match(link,"^%[%[[^|]*|([^%[%]]*)%]%]$") or strona;
local z_kodowaniem_temp=(mw.ustring.match(strona,"%%%x%x")and true or false) or z_kodowaniem;
link=p.TworzenieWikiLinku(nil,nil,nil,strona,nil,nazwa,nil,nil,false,nil,nil,nil,nil,nil,nil,nil,z_kodowaniem_temp);
return link;
end;
return mw.ustring.gsub(argument_pierwszy,"(%[%[[^%[%]]*%]%])",function(s)return pojedynczy_link(s);end);
end;
p["WydobądźLinki"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local wartosc,_=PobierzParametr(1);
local z_kodowaniem=PobierzParametr("uri") or PobierzParametr(2);
local specjalne_modul=require("Module:Specjalne");
wartosc=specjalne_modul["UsuńKomentarze"](wartosc);
wartosc=specjalne_modul["UsuńSzablonyStylów"](wartosc);
wartosc=specjalne_modul["UsuńZnaczniki"](wartosc);
wartosc=specjalne_modul["UsuńKategorie"](wartosc);
wartosc=specjalne_modul["UsuńWywołaniaPlików"](wartosc);
wartosc=specjalne_modul["UsuńInterwiki"](wartosc);
local linki_modul=require("Module:Linki");
wartosc=linki_modul["PoprawLinki"]{wartosc,z_kodowaniem};
return wartosc;
end;
function p.TworzenieWikiLinku(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,z_kodowaniem)
if(not czy_url)then
local parametry_modul=require("Module:Parametry");
local czy_klucz_projektu_do_projektu_linku=parametry_modul.CzyTak(klucz_projektu_do_projektu_linku);
local czy_kod_jezyka_do_projektu_linku=parametry_modul.CzyTak(kod_jezyka_do_projektu_linku);
local czy_kod_projektu_do_projektu_linku=parametry_modul.CzyTak(kod_projektu_do_projektu_linku);
local czy_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
local czy_po=parametry_modul.CzyTak(po);
if(not czy_naglowek_strony)then
if(czy_nazwa_strony_linku)then
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local strona_zmienna_tymczasowa=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu)
local naglowek_zmienna_tymczasowa=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
if(strona_zmienna_tymczasowa and naglowek_zmienna_tymczasowa)then
nazwa_strony_linku=strona_zmienna_tymczasowa;
naglowek_zmienna_tymczasowa=parametry_modul["Odstępy"]{[1]=naglowek_zmienna_tymczasowa,[2]="tak",[3]="tak",};
if(parametry_modul.CzyTak(naglowek_zmienna_tymczasowa))then
naglowek_strony=naglowek_zmienna_tymczasowa;
czy_naglowek_strony=true;
end;
end;
end;
else
naglowek_strony=parametry_modul["Odstępy"]{[1]=naglowek_strony,[2]="tak",[3]="tak",};
if(not parametry_modul.CzyTak(naglowek_strony))then
czy_naglowek_strony=false;
naglowek_strony=nil;
end;
end;
---
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local interwikimap=wiki_interwiki_modul.interwikimap;
local interwikisiostrzaneangielskie=wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie;
local wiki_modul=require("Module:Wiki");
local kod_jezyka_uzyskany_poczatkowy,kod_projektu_uzyskany_poczatkowy=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
if(not kod_jezyka_uzyskany_poczatkowy or not kod_projektu_uzyskany_poczatkowy)then
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_uzyskany_poczatkowy or kod_jezyka_tego_projektu;
kod_projektu_uzyskany_poczatkowy=kod_projektu_uzyskany_poczatkowy or kod_projektu_tego_projektu;
end;
local czy_pelna_nazwa_strony_prawidlowa=parametry_modul["CzyTakCiąg"](nazwa_strony_linku) and not mw.ustring.match(nazwa_strony_linku,"^[%s_:]+$") or nil;
local tablica_kodow={};
local kod_jezyka_koncowy;local kod_projektu_koncowy;
---------------------------------------------------------------------
kod_jezyka_koncowy=kod_jezyka_uzyskany_poczatkowy;
kod_projektu_koncowy=kod_projektu_uzyskany_poczatkowy;
---------------------------------------------------------------------
local kod_jezyka_poczatkowy,kod_projektu_poczatkowy;
if(czy_pelna_nazwa_strony_prawidlowa)then
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy,kod_jezyka_poczatkowy,kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy,bez_przetwarzania_kodow and tablica_kodow or nil);
czy_pelna_nazwa_strony_prawidlowa=parametry_modul["CzyTakCiąg"](nazwa_strony_linku) and not mw.ustring.match(nazwa_strony_linku,"^[%s_:]+$") or nil;
end;
----
if(not nazwa)then
nazwa=nazwa_strony_linku..(czy_naglowek_strony and ("#"..naglowek_strony) or "");
nazwa=mw.ustring.gsub(nazwa,"[%s_]+"," ");
czy_nazwa=parametry_modul.CzyTak(nazwa);
end
local ciag_tablica_kodow="";
if(bez_przetwarzania_kodow)then
if(kod_jezyka_poczatkowy)then
if((kod_jezyka_uzyskany_poczatkowy==kod_jezyka_tego_projektu)and(kod_projektu_uzyskany_poczatkowy==kod_projektu_tego_projektu))then
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_poczatkowy;
else
ciag_tablica_kodow=kod_jezyka_poczatkowy;
end;
elseif(kod_projektu_poczatkowy)then
if((kod_jezyka_uzyskany_poczatkowy==kod_jezyka_tego_projektu)and(kod_projektu_uzyskany_poczatkowy==kod_projektu_tego_projektu))then
kod_projektu_uzyskany_poczatkowy=kod_projektu_poczatkowy;
else
ciag_tablica_kodow=kod_projektu_poczatkowy;
end;
end;
local ciag_tablica_kodow_zmienna_tymczasowa=table.concat(tablica_kodow,":");
ciag_tablica_kodow=ciag_tablica_kodow..(((ciag_tablica_kodow~="")and(ciag_tablica_kodow_zmienna_tymczasowa~=""))and ":" or "")..ciag_tablica_kodow_zmienna_tymczasowa;
else
kod_jezyka_uzyskany_poczatkowy=kod_jezyka_koncowy;
kod_projektu_uzyskany_poczatkowy=kod_projektu_koncowy;
end;
local nazwy_modul=require("Module:Nazwy");
local czy_dyskusja=parametry_modul.CzyTak(dyskusja);
local pierwsza_litera=((czy_pelna_nazwa_strony_prawidlowa)and(not czy_dyskusja)) and mw.ustring.match(nazwa_strony_linku,"^(%a)") or nil;
local tabela_nazw={};
local nazwaprzestrzeni=czy_pelna_nazwa_strony_prawidlowa and ((not czy_dyskusja)and nazwy_modul["NAZWAPRZESTRZENI"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy},tabela_nazw)
or nazwy_modul["PRZESTRZEŃDYSKUSJI"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw)) or "";
local nazwastrony=czy_pelna_nazwa_strony_prawidlowa and nazwy_modul["NAZWASTRONY"]({[1]=nazwa_strony_linku,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw) or "";
local linki_modul=require("Module:Linki");
local strona_inna_zmienna_tymczasowa,czy_strona_lokalna=linki_modul["PrzetłumaczZnakZastępczyNaStronę"](nazwaprzestrzeni,nazwastrony,kod_jezyka_koncowy,kod_projektu_koncowy,czy_naglowek_strony);
local czy_pelna_nazwa_strony_prawidlowa=((czy_pelna_nazwa_strony_prawidlowa)and(parametry_modul["CzyTakCiąg"](strona_inna_zmienna_tymczasowa) and not mw.ustring.match(strona_inna_zmienna_tymczasowa,"^[%s_:]+$")) or strona_inna_zmienna_tymczasowa);
local function TabelaNazw()tabela_nazw_temp={};tabela_nazw_temp.czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;return tabela_nazw_temp;end;
if(nazwastrony=="")then
local tabela_nazw=TabelaNazw();
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw)
local techniczne_modul=require("Module:Techniczne");
local nowa_nazwa_strony=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](nazwa_strony);
if(nazwa)then
local f,ile=mw.ustring.gsub(nazwa,"%%s",function()return nil;end);
if(ile==1)then
nazwa=mw.ustring.format(nazwa,nowa_nazwa_strony) or nil;
elseif(ile==2)then
local nowa_nazwa_przestrzeni=nazwy_modul[(czy_dyskusja) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw);
if(tabela_nazw.czy_aktualna_wiki)then
nowa_nazwa_przestrzeni=nazwy_modul.Np{nazwa=nowa_nazwa_przestrzeni,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
nowa_nazwa_przestrzeni=nazwy_modul.NpDane{nazwa=nowa_nazwa_przestrzeni,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or nowa_nazwa_przestrzeni;
end;
nazwa=mw.ustring.format(nazwa,nowa_nazwa_przestrzeni,nowa_nazwa_strony) or nil;
end;
end;
end;
strona_inna_zmienna_tymczasowa=strona_inna_zmienna_tymczasowa or nazwa_strony_linku;
local function NazwaStronyDyskusji(strona)
if(czy_dyskusja and czy_pelna_nazwa_strony_prawidlowa)then
return nazwy_modul["NAZWASTRONYDYSKUSJI"]({[1]=strona,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw());
end;
return strona;
end;
local strona_zmienna_tymczasowa=NazwaStronyDyskusji(strona_inna_zmienna_tymczasowa);
nazwa_strony_linku=((not czy_strona_lokalna or ((czy_dyskusja)and(nazwy_modul["NAZWAPRZESTRZENI"]({[1]=strona_inna_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw())~=nazwy_modul["NAZWAPRZESTRZENI"]({[1]=strona_zmienna_tymczasowa,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},TabelaNazw()))))and strona_zmienna_tymczasowa or "");
nazwa_strony_linku=pierwsza_litera and mw.ustring.gsub(nazwa_strony_linku,"^["..mw.getContentLanguage():ucfirst(pierwsza_litera)..mw.getContentLanguage():lcfirst(pierwsza_litera).."]",pierwsza_litera) or nazwa_strony_linku;
czy_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
local function BiezacaWikiDwukropek()
local czy_biezace_wiki=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
local czy_wstawiac_dwukropek;
if(czy_biezace_wiki)then
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwaprzestrzeni==nazwy_np_modul.Category)or(nazwaprzestrzeni==nazwy_np_modul.File))then
czy_wstawiac_dwukropek=true;
end;
end;
return czy_wstawiac_dwukropek;
end;
local pudelko_modul=require("Module:Pudełko");
local jezykowe_projekty=wiki_interwiki_modul.tablica_lokalne_lingwistyczne_siostrzane;
local projekty_nie_en=jezykowe_projekty[kod_projektu_uzyskany_poczatkowy];
local czy_kod_jezyka_uzyskany_poczatkowy=(kod_jezyka_uzyskany_poczatkowy~=kod_jezyka_tego_projektu);
local czy_kod_projektu_uzyskany_poczatkowy=(kod_projektu_uzyskany_poczatkowy~=kod_projektu_tego_projektu);
local html_modul=require("Module:Html");
local function AdresLinku()
local kody_poczatkowe=(not projekty_nie_en and (czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "") or(czy_kod_jezyka_uzyskany_poczatkowy and kod_jezyka_uzyskany_poczatkowy..":"..(czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "") or (czy_kod_projektu_uzyskany_poczatkowy and kod_projektu_uzyskany_poczatkowy..":" or "")));
local tablica_kodow=kody_poczatkowe..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "");
local czy_wstawiac_dwukropek=((tablica_kodow~="")and (projekty_nie_en and (czy_kod_jezyka_uzyskany_poczatkowy and ":" or "") or "") or (BiezacaWikiDwukropek() and ":" or ""));
local strona;local parametry;local naglowek;
if(czy_nazwa_strony_linku)then
strona=html_modul.EncodeElementyAdresuStrony(nazwa_strony_linku,nil,z_kodowaniem);
end;
if(czy_parametry_strony)then
parametry=html_modul.EncodeElementyAdresuStrony(parametry_strony,true,z_kodowaniem);
parametry="?"..parametry;
end;
if(czy_naglowek_strony)then
naglowek=html_modul.EncodeElementyAdresuStrony(naglowek_strony,nil,z_kodowaniem);
naglowek="#"..naglowek;
end;
local zmienna_linkowa=tablica_kodow..(strona or "") ..(parametry or "")..(naglowek or "");
return zmienna_linkowa, czy_wstawiac_dwukropek;
end;
nazwa=nazwa and mw.ustring.gsub(nazwa,"^[%s_]*","") or nil;
nazwa=nazwa and mw.ustring.gsub(nazwa,"[%s_]*$","") or nil;
--nazwa=nazwa and mw.ustring.gsub(nazwa,"[%s_]+"," ") or nil;
if(czy_ogolne and not czy_nazwa)then
if(parametry_modul.CzyTak(wyswietl))then
nazwa=strona_zmienna_tymczasowa;
czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
else
if((czy_pelna_nazwa_strony_prawidlowa)and(nazwastrony~=""))then
nazwa=nazwastrony;
else
nazwa=nazwy_modul["NAZWASTRONY"]{[1]=strona_zmienna_tymczasowa,["kod języka"]=kod_jezyka_uzyskany_poczatkowy,["kod projektu"]=kod_projektu_uzyskany_poczatkowy,};
end;
czy_nazwa=parametry_modul["CzyTakCiąg"](nazwa);
end
end;
local zmienna_linkowa;
local aktywny;
if(not czy_wewnetrzny_z_fullurl)then
local czy_wstawiac_dwukropek;
zmienna_linkowa,czy_wstawiac_dwukropek=AdresLinku();
zmienna_linkowa=mw.ustring.gsub(zmienna_linkowa,"[%s_]+"," ");
local czy_za=parametry_modul.CzyTak(za);
if(czy_za or(nazwa and (nazwa~=zmienna_linkowa)))then
zmienna_linkowa="[["..czy_wstawiac_dwukropek..zmienna_linkowa..(czy_nazwa and "|"..nazwa..(czy_za and za or "") or (czy_za and ("|"..zmienna_linkowa..za) or "")).."]]"..(czy_po and po or "");
else
zmienna_linkowa="[["..czy_wstawiac_dwukropek..zmienna_linkowa.."]]"..(czy_po and po or "");
end
aktywny=false;
else
aktywny=true;
local serwer;
local projekt;
if(projekty_nie_en)then
for kod_specjalny_projektu,kod_projektu_interwiki in pairs(wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie)do
if(kod_projektu_uzyskany_poczatkowy==kod_projektu_interwiki)then
projekt=kod_specjalny_projektu;
end;
end;
end;
local function Protocol(kod_projektu)
local interwikimap=wiki_interwiki_modul.interwikimap;
local url=interwikimap[kod_projektu];
if(not url)then return "";end;
return mw.ustring.match(url,"^([^/]*)//");
end;
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local nazwy_np_modul=require("Module:Nazwy/Np");
local nazwy_modul=require("Module:Nazwy");
local czy_specjalna=(nazwaprzestrzeni==nazwy_np_modul.Special);
local ciag_tablica_kodow_zmienna_tymczasowa=mw.ustring.gsub(strona_zmienna_tymczasowa,"[%s_]+","_");
if(((projekt)and(czy_parametry_strony)and(czy_specjalna))or((projekt)and(wersja_linku=="w")))then
local adres=Protocol(kod_projektu_uzyskany_poczatkowy).."//"..kod_jezyka_uzyskany_poczatkowy.."."..projekt..".org/w/index.php?title="..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and "&"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za)and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((not projekty_nie_en)and(czy_parametry_strony)and(czy_specjalna))or((not projekty_nie_en)and(wersja_linku=="w")))then
local techniczne_modul=require("Module:Techniczne");
local wiki_nie_jezykowe=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane[kod_projektu_uzyskany_poczatkowy];
local serwer=mw.ustring.match(wiki_nie_jezykowe,"^([^/]*//[^/]*)")
local adres=serwer.."/w/index.php?title="..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and "&"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za)and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((projekt)and(czy_parametry_strony))or((projekt)and(wersja_linku=="wiki")))then
local strona_zmienna_tymczasowa,_=mw.ustring.gsub(strona_zmienna_tymczasowa,"[_%s]+","_");
local adres=Protocol(kod_projektu_uzyskany_poczatkowy).."//"..kod_jezyka_uzyskany_poczatkowy.."."..projekt..".org/wiki/"..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..html_modul.EncodeHtml(strona_zmienna_tymczasowa)..(czy_parametry_strony and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and " "..nazwa..(parametry_modul.CzyTak(za) and za or "") or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
elseif(((not projekty_nie_en)and(czy_parametry_strony))or((not projekty_nie_en)and(wersja_linku=="wiki")))then
local wiki_nie_jezykowe=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane[kod_projektu_uzyskany_poczatkowy];
local strona_zmienna_tymczasowa,_=mw.ustring.gsub(ciag_tablica_kodow_zmienna_tymczasowa,"[_%s]+","_");
strona_zmienna_tymczasowa=((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..strona_zmienna_tymczasowa;
strona_zmienna_tymczasowa=html_modul.EncodeHtml(strona_zmienna_tymczasowa);
strona_zmienna_tymczasowa,_=mw.ustring.gsub(strona_zmienna_tymczasowa,"([%%])(%d+)","%%%%%2");
strona_zmienna_tymczasowa,_=mw.ustring.gsub(wiki_nie_jezykowe,"$1",strona_zmienna_tymczasowa);
local adres=strona_zmienna_tymczasowa..(czy_parametry_strony and "?"..html_modul.EncodeParametryHtml(parametry_strony) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
else
local pudelko_modul=require("Module:Pudełko");
zmienna_linkowa=(parametry_modul.CzyTak(klucz_projektu)and ((not(klucz_projektu==pudelko_modul["Klucz projektu tego projektu"]()))and (klucz_projektu..":")or "" )
or ((parametry_modul.CzyTak(kod_jezyka_uzyskany_poczatkowy)and ((not(kod_jezyka_uzyskany_poczatkowy==pudelko_modul["Kod języka tego projektu"]()))and(kod_jezyka_uzyskany_poczatkowy..":")or "") or "")..(parametry_modul.CzyTak(kod_projektu_uzyskany_poczatkowy)and ((not(kod_projektu_uzyskany_poczatkowy==pudelko_modul["Kod projektu tego projektu"]()))and(kod_projektu_uzyskany_poczatkowy..":")or "") or "")))
..((ciag_tablica_kodow~="")and (ciag_tablica_kodow..":") or "")..strona_zmienna_tymczasowa;
local strona=(czy_parametry_strony and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(czy_naglowek_strony and ("#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony))) or "");
local adres=tostring(mw.uri.fullUrl(zmienna_linkowa))..strona;
zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
end;
end;
return zmienna_linkowa,kod_jezyka_koncowy,kod_projektu_koncowy,strona_zmienna_tymczasowa,czy_naglowek_strony,aktywny;
else
local parametry_modul=require("Module:Parametry");
local html_modul=require("Module:Html");
local czy_nazwa;
if(not nazwa)then
nazwa=mw.ustring.match(nazwa_strony_linku,"//[^/]*/(.*)$");
nazwa=html_modul.DecodeHtml(nazwa);
czy_nazwa=parametry_modul.CzyTak(nazwa);
else
czy_nazwa=parametry_modul.CzyTak(nazwa);
end;
local czy_po=parametry_modul.CzyTak(po);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
nazwa_strony_linku=mw.ustring.gsub(nazwa_strony_linku,"[%s_]+","_");
nazwa_strony_linku=mw.ustring.gsub(nazwa_strony_linku,"//([^/]*)/(.*)$", function(s1,s2)return "//"..s1.."/"..html_modul.EncodeHtml(s2);end)
local adres=nazwa_strony_linku..(czy_parametry_strony and "?"..html_modul.EncodeParametryHtml(parametry_strony) or "")
..(czy_naglowek_strony and "#"..html_modul.ZnakiSpecjalneWikiLinku(html_modul.EncodeHtml(naglowek_strony)) or "");
local zmienna_linkowa="["..adres..(czy_nazwa and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or "")).."]"..(czy_po and po or "");
return zmienna_linkowa,nil,nil,nazwa_strony_linku,czy_naglowek_strony,false;
end;
end;
function p.TworzLinkBezPrzetwarzania(klucz_projektu,kod_jezyka,kod_projektu,strona,naglowek,nazwa,za,po,z_kodowaniem)
local parametry_modul=require("Module:Parametry");
local adres=(parametry_modul.CzyTak(klucz_projektu)and (klucz_projektu..":")
or ((parametry_modul.CzyTak(kod_jezyka)and (kod_jezyka..":") or "")..(parametry_modul.CzyTak(kod_projektu)and (kod_projektu..":") or "")))
..strona..(parametry_modul.CzyTak(naglowek) and ("#"..naglowek) or "");
local html_modul=require("Module:Html");
adres=html_modul.AdresProjektuEncodeHtml(adres,z_kodowaniem);
local wartosc="[[:"..adres..(parametry_modul.CzyTak(nazwa) and ("|"..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and ("|"..adres..za) or "")).."]]"..(po and po or "");
return wartosc;
end;
function p.LinkOgromne(spanramka,link)
local max_len_link=0;
local iter=mw.ustring.gmatch(link,"(%a+)");
for value in iter do max_len_link=math.max(max_len_link,#value);end;
if(max_len_link>=20)then spanramka:addClass("link-ogromne");end;
end;
function p.LinkWikidane(link,klucz_projektu,kod_jezyka,kod_projektu,strona,czy_naglowek,czy_url,czy_parametry,aktywny)
local wiki_modul=require("Module:Wiki");
local klasa=wiki_modul.KodyKlasStronyNaDanejWiki{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,["strona"]=strona,["nagłówek"]=czy_naglowek,["url"]=czy_url,["parametry"]=czy_parametry,["aktywny"]=aktywny,};
local nazwy_modul=require("Module:Nazwy");
local spanramka=mw.html.create('span');
spanramka:addClass(klasa);
spanramka:addClass("link");
----
p.LinkOgromne(spanramka,link);
----
spanramka:wikitext(link);
return tostring(spanramka:allDone());
end;
function p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem)
local parametry_modul=require("Module:Parametry");
parametry_strony=czy_wewnetrzny_z_fullurl and parametry_strony or nil;
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local html_modul=require("Module:Html");
nazwa_strony_linku=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_strony_linku);
local wartosc_parent,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,czy_naglowek_strony,aktywny=p.TworzenieWikiLinku(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,czy_ogolne,wyswietl,dyskusja,bez_przetwarzania_kodow,z_kodowaniem);
if(parametry_modul.CzyTak(bez_znacznikow))then return wartosc_parent;end;
return p.LinkWikidane(wartosc_parent,nil,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,czy_naglowek_strony,czy_url,czy_parametry_strony,aktywny);
end;
function p.RozwinKreskaPoziomowa(miano_przestrzeni_nazw,nazwa_strony_linku,naglowek,czy_link_url,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,tabela_nazw,__FUNKCJA)
local nowa_nazwa_strony_linku;
local czy_kreska_dolna;local hash;local prze_nie_main;
local czy_strona_lokalna;
if(not czy_analiza)then
czy_kreska_dolna=mw.ustring.match(nazwa_strony_linku,"^[%s_:]*$") or mw.ustring.match(nazwa_strony_linku,":[%s_]*$");
hash=(not czy_kreska_dolna)and ((not czy_link_url) and mw.ustring.match(nazwa_strony_linku,"^[_%s]*#(.*)$") or nil) or (((czy_kreska_dolna)and(czy_link_url) and require("Module:Parametry").CzyTak(naglowek)) and naglowek or nil);
if((czy_kreska_dolna)or(hash))then
local wiki_modul=require("Module:Wiki");
local nazwy_modul=require("Module:Nazwy");
local kod_jezyka,kod_projektu=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local miano_przestrzeni_nazw_maly=((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~=""))and mw.ustring.lower(miano_przestrzeni_nazw) or miano_przestrzeni_nazw;
if((not miano_przestrzeni_nazw_maly)or((miano_przestrzeni_nazw_maly=="")or(miano_przestrzeni_nazw_maly=="(main)")or(miano_przestrzeni_nazw_maly=="(główna)")))then
miano_przestrzeni_nazw=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_strony_linku,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,},tabela_nazw);
end;
local nazwa_strony=nazwy_modul["NAZWASTRONY"]({nazwa=nazwa_strony_linku,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,},tabela_nazw);
if(nazwa_strony=="")then
nowa_nazwa_strony_linku,czy_strona_lokalna=p["PrzetłumaczZnakZastępczyNaStronę"](miano_przestrzeni_nazw or "","",kod_jezyka,kod_projektu,hash);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
nowa_nazwa_strony_linku=__FUNKCJA(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main);
return nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna;
end;
p["GanerujSkładoweURL"] = function(args)
local klucz_projektu_do_projektu_linku;
local kod_jezyka_do_projektu_linku;
local kod_projektu_do_projektu_linku;
local miano_przestrzeni_nazw;
local nazwa_strony_linku=args["strona"] or args["s"] or "_";
local html_modul=require("Module:Html");
nazwa_strony_linku=nazwa_strony_linku and html_modul.DecodeHtml(nazwa_strony_linku) or nil;
local parametry_modul=require("Module:Parametry");
local w=args["wersja linku"] or args["w"];
local tab_w={
["w"]=true,
["wiki"]=true,
};
local wersja_linku=parametry_modul.CzyTak(w) and (tab_w[w] and w or nil) or "";
local _;
local strony_modul=require("Module:Strony");
local czy_url=strony_modul.SprawdzanieURL(nazwa_strony_linku);
local parametry_strony;local naglowek_strony;local nazwa;local po;local po;local za;
nazwa=args["nazwa"] or args["n"];
po=args["po"] or args["p"];
za=args["za"] or args["z"];
local function DaneStrony(nazwa_strony_linku_parametr,adres)
if(parametry_modul.CzyTak(nazwa_strony_linku_parametr))then
if(mw.ustring.match(nazwa_strony_linku_parametr,"^/wiki/"))then
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/wiki/","");
local tabela_nazw_adresu={};
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
elseif(mw.ustring.match(nazwa_strony_linku_parametr,"^/w/"))then
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/w/","");
local tabela_nazw_adresu={};
local html_modul=require("Module:Html");
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
local nazwa_strony_jednostki,parametry_strony_jednostki=html_modul["NazwaStronyZParametrówStronyAdresu"](parametry_strony,true);
parametry_strony=parametry_strony_jednostki or parametry_strony;
nazwa_strony_linku_parametr=nazwa_strony_jednostki or nazwa_strony_linku_parametr;
else
nazwa_strony_linku_parametr,_=mw.ustring.gsub(nazwa_strony_linku_parametr,"^/(.*)$","%1");
local tabela_nazw_adresu={};
local html_modul=require("Module:Html");
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
nazwa_strony_linku_parametr=html_modul["NazwaStronyAdresu"](nazwa_strony_linku_parametr,true,tabela_nazw_adresu);
end;
else
if((parametry_modul.CzyTak(kod_jezyka_do_projektu_linku))or(parametry_modul.CzyTak(kod_projektu_do_projektu_linku)))then
if((not adres)or(mw.ustring.match(adres,"/$1$")))then
local pudelko_modul=require("Module:Pudełko");
nazwa_strony_linku_parametr=pudelko_modul["Nazwa strony głównej projektu 2"]{[1]=kod_jezyka_do_projektu_linku,[2]=kod_projektu_do_projektu_linku,} or "";
end;
end;
end;
parametry_strony=parametry_modul.CzyTak(parametry_strony) and parametry_strony or (args["parametry"] or args["c"]);
naglowek_strony=parametry_modul.CzyTak(naglowek_strony) and naglowek_strony or (args["nagłówek"] or args["g"]);
local biezaca=args["bieżąca"] or args["b"];
local czy_biezaca=parametry_modul.CzyTak(biezaca);
nazwa=nazwa or (czy_biezaca and naglowek_strony or nil);
--nazwa=args["nazwa"] or args["n"];
local klucz_projektu_do_projektu_linku_temp=args["klucz projektu"] or args["k"];
klucz_projektu_do_projektu_linku=parametry_modul.CzyTak(klucz_projektu_do_projektu_linku_temp) and (klucz_projektu_do_projektu_linku_temp) or klucz_projektu_do_projektu_linku;
local kod_jezyka_do_projektu_linku_temp=args["kod języka"] or args["kj"];
kod_jezyka_do_projektu_linku=parametry_modul.CzyTak(kod_jezyka_do_projektu_linku_temp) and (kod_jezyka_do_projektu_linku_temp) or kod_jezyka_do_projektu_linku;
local kod_projektu_do_projektu_linku_temp=args["kod projektu"] or args["kp"];
kod_projektu_do_projektu_linku=parametry_modul.CzyTak(kod_projektu_do_projektu_linku_temp) and (kod_projektu_do_projektu_linku_temp) or kod_projektu_do_projektu_linku;
nazwa_strony_linku=nazwa_strony_linku_parametr;
czy_url=false;
end;
if(not czy_url)then
local miano_przestrzeni_nazw=args["miano przestrzeni nazw"] or args["przestrzeń"] or args["f"];
nazwa_strony_linku=parametry_modul["CzyTakCiąg"](miano_przestrzeni_nazw) and miano_przestrzeni_nazw..":"..nazwa_strony_linku or nazwa_strony_linku;
DaneStrony(nazwa_strony_linku);
else
local html_modul=require("Module:Html");
local nazwa_strony_bez_protokolu=html_modul["UrlBezProtokołu"](nazwa_strony_linku);
local serwer,nazwa_strony=html_modul["URLStrona"](nazwa_strony_bez_protokolu);
local wiki_interwiki_modul=mw.loadData("Module:Wiki/interwiki");
local function SerwerWiki(serwer)
local kod_jezyka_zmienna_tymczasowa,kod_specjalny_projektu=mw.ustring.match(serwer,"^(%w+)%.(%w+)%.org");
if((not kod_jezyka_zmienna_tymczasowa)or(not kod_specjalny_projektu))then
kod_jezyka_zmienna_tymczasowa,kod_specjalny_projektu=mw.ustring.match(serwer,"^(%w+)%.[mM]%.(%w+)%.org");
end;
local interwikisiostrzaneangielskie=wiki_interwiki_modul.tablica_interwiki_siostrzane_angielskie;
local kod_projektu=interwikisiostrzaneangielskie[kod_specjalny_projektu];
local kod_jezyka=kod_jezyka_zmienna_tymczasowa and (mw.language.isKnownLanguageTag(kod_jezyka_zmienna_tymczasowa) and kod_jezyka_zmienna_tymczasowa or nil) or nil;
return kod_jezyka,kod_projektu;
end;
local function JezykoweLubAngielskieProjekty(serwer_portalu)
local kod_jezyka,kod_projektu=SerwerWiki(serwer_portalu);
if(kod_jezyka and kod_projektu)then
kod_jezyka_do_projektu_linku=kod_jezyka;
kod_projektu_do_projektu_linku=kod_projektu;
klucz_projektu_do_projektu_linku=nil;
DaneStrony(nazwa_strony);
return true;
else
local pozajezykoweprojektysiostrzane=wiki_interwiki_modul.tablica_poza_lingwistyczne_projekty_siostrzane;
local techniczne_modul=require("Module:Techniczne");
for kod, url in pairs(pozajezykoweprojektysiostrzane)do
local adres=html_modul["UrlBezProtokołu"](url);
local serwer_portalu,nazwa_strony_portalu=html_modul["URLStrona"](adres);
if(serwer_portalu)then
if((serwer_portalu==serwer)and((mw.ustring.match(nazwa_strony_portalu,"%$1"))or(nazwa_strony==nazwa_strony_portalu)))then
kod_jezyka_do_projektu_linku=kod_jezyka or "en";
kod_projektu_do_projektu_linku=--[[kod_projektu or]] kod;
local nazwa_strony_spreparowana=nil;
if(not mw.ustring.match(adres,"/wiki/%$1$"))then
if(mw.ustring.match(url,"[:/]$1$"))then
local url_wzor=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](adres);
url_wzor=mw.ustring.gsub(url_wzor,"(%%$1)$","(.-)");
nazwa_strony_spreparowana=mw.ustring.match(nazwa_strony_bez_protokolu,"^"..url_wzor.."$");
if(not nazwa_strony_spreparowana)then
return false;
end;
end;
end;
DaneStrony(nazwa_strony_spreparowana or nazwa_strony,adres);
return true;
end;
end;
end;
end;
end;
local function __FUNKCJA()
if(mw.ustring.match(serwer,"^upload%.wikimedia%.org$"))then
DaneStrony(nazwa_strony);
nazwa_strony=nazwa_strony_linku;
nazwa_strony_linku="Media:"..mw.ustring.match(nazwa_strony,"([^/]*)$");
local kod_projektu_do_projektu_linku2,kod_jezyka_do_projektu_linku2=mw.ustring.match(nazwa_strony,"^([^/]*)/([^/]*)/.*$");
kod_jezyka_do_projektu_linku=kod_jezyka_do_projektu_linku or kod_jezyka_do_projektu_linku2;
kod_projektu_do_projektu_linku=kod_projektu_do_projektu_linku or kod_projektu_do_projektu_linku2;
czy_url=false;
else
local juz_tak=JezykoweLubAngielskieProjekty(serwer);
if(not juz_tak)then
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
naglowek_strony=html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
naglowek_strony=parametry_modul.CzyTak(naglowek_strony) and naglowek_strony or (args["nagłówek"] or args["g"]);
local biezaca=args["bieżąca"] or args["b"];
local czy_biezaca=parametry_modul.CzyTak(biezaca);
nazwa=nazwa or (czy_biezaca and naglowek_strony or nil);
parametry_strony=html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
parametry_strony=parametry_modul.CzyTak(parametry_strony) and parametry_strony or (args["parametry"] or args["c"]);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
end;
end;
end;
__FUNKCJA();
end;
local czy_wewnetrzny_z_fullurl;
if(not parametry_modul.CzyTak(parametry_strony))then
if(wersja_linku=="")then
if((klucz_projektu_do_projektu_linku)or(kod_jezyka_do_projektu_linku)or(kod_projektu_do_projektu_linku))then
czy_wewnetrzny_z_fullurl=false;
elseif(not czy_url)then
czy_wewnetrzny_z_fullurl=false;
else
czy_wewnetrzny_z_fullurl=true;
end;
else
czy_wewnetrzny_z_fullurl=true;
end;
else
czy_wewnetrzny_z_fullurl=true;
end;
return klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url;
end;
p["Link wewnętrzny"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local klucz_projektu_do_projektu_linku=args["klucz projektu"] or args["k"];
local kod_jezyka_do_projektu_linku=args["kod języka"] or args["kj"];
local kod_projektu_do_projektu_linku=args["kod projektu"] or args["kp"];
local nazwa_strony_linku=args["strona"] or args["s"] or "_";
local nazwa=args["nazwa"] or args["n"];
local czy_nazwa=parametry_modul.CzyTak(nazwa);
nazwa=czy_nazwa and nazwa or nil;
local po=args["po"] or args["p"];
local za=args["za"] or args["z"];
local naglowek_strony=args["nagłówek"] or args["g"];
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"] or args["bz"]);
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"] or args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]or args["bk"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"] or args["u"]);
local czy_analiza=parametry_modul.CzyTak(args["analiza"] or args["a"]);
local czy_naglowek=parametry_modul.CzyTak(naglowek_strony);
local hash;local czy_kreska_dolna;local prze_nie_main;local czy_strona_lokalna;local nowa_nazwa_strony_linku;
if(not czy_analiza)then
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa("",nazwa_strony_linku,naglowek_strony,czy_naglowek,nil,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,{},function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
return nowa_nazwa_strony_linku;
end);
nazwa=czy_nazwa and nazwa or (hash and ("#"..hash) or nil);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (((not czy_naglowek)and(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$")))or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*#(.*)$")))) or nil);
if(not bez_przetwarzania)then
return p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek and naglowek_strony or hash,nazwa,za,po,nil,nil,nil,nil,nil,nil,nil,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
else
local link=p.TworzLinkBezPrzetwarzania(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,(not czy_strona_lokalna) and nowa_nazwa_strony_linku or (hash and "" or nowa_nazwa_strony_linku),czy_naglowek and naglowek_strony or hash,nazwa,za,po,z_kodowaniem);
if(not bez_znacznikow)then
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek_strony or hash or mw.ustring.match(nazwa_strony_linku,"#"),nil,nil);
else
return link;
end;
end;
end;
p["LinkURL"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local linki_modul=require("Module:Linki");
local klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url=linki_modul["GanerujSkładoweURL"](args);
local czy_analiza=parametry_modul.CzyTak(args["analiza"]) or parametry_modul.CzyTak(args["a"]);
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"]) or parametry_modul.CzyTak(args["bz"]);
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"]) or parametry_modul.CzyTak(args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]) or parametry_modul.CzyTak(args["bk"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"]) or parametry_modul.CzyTak(args["u"]);
local czy_naglowek=parametry_modul.CzyTak(naglowek_strony);
local hash;local czy_kreska_dolna;local prze_nie_main;local czy_strona_lokalna;local nowa_nazwa_strony_linku;
if((not czy_analiza)and(not czy_url))then
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa("",nazwa_strony_linku,naglowek_strony,czy_naglowek,nil,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,{},function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
return nowa_nazwa_strony_linku;
end);
nazwa=parametry_modul.CzyTak(nazwa) and nazwa or (hash and ("#"..hash) or nil);
else
nowa_nazwa_strony_linku=nazwa_strony_linku;
end;
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$"))) or nil);
local function Bez_przetwarzania_lub_bez_znaczkow()
if(parametry_modul.CzyTak(bez_przetwarzania))then
local bez_znacznikow=parametry_modul.CzyTak(bez_znacznikow);
local czy_parametry=parametry_modul.CzyTak(parametry_strony);
local wartosc=((not czy_url)and((parametry_modul.CzyTak(klucz_projektu_do_projektu_linku)and (klucz_projektu_do_projektu_linku..":")
or ((parametry_modul.CzyTak(kod_jezyka_do_projektu_linku)and (kod_jezyka_do_projektu_linku..":") or "")..(parametry_modul.CzyTak(kod_projektu_do_projektu_linku)and (kod_projektu_do_projektu_linku..":") or "")))..nowa_nazwa_strony_linku) or nil);
local link;
local po_linku=parametry_modul.CzyTak(po) and po or "";
if((not czy_url)and((czy_parametry)or(parametry_modul.CzyTak(wersja_linku))))then
local adres=tostring(mw.uri.fullUrl(wartosc,""));
adres=((not parametry_modul.CzyTak(wersja_linku))or(wersja_linku=="wiki")) and adres or mw.ustring.gsub(adres,"/wiki/","/w/index.php?title=",1);
local html_modul=require("Module:Html");
local parametry_i_naglowek=((czy_parametry)and ((((wersja_linku=="w")) and "&" or "?")..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "")
adres=adres..parametry_i_naglowek;
link= "["..adres..(parametry_modul.CzyTak(nazwa) and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or (" "..nowa_nazwa_strony_linku))).."]"..po_linku;
elseif(czy_url)then
local html_modul=require("Module:Html");
local parametry_i_naglowek=((czy_parametry)and ("?"..html_modul.EncodeParametryHtml(parametry_strony)) or "")..(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "")
local adres=nowa_nazwa_strony_linku..parametry_i_naglowek;
link= "["..adres..(parametry_modul.CzyTak(nazwa) and (" "..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and (" "..adres..za) or (" "..nowa_nazwa_strony_linku))).."]"..po_linku;
else
local naglowek=(parametry_modul.CzyTak(naglowek_strony) and ("#"..mw.ustring.gsub(naglowek_strony,"[%s_]+","_")) or "");
local adres=wartosc..naglowek;
link="[[:"..adres..((parametry_modul.CzyTak(nazwa)) and ("|"..nazwa..(parametry_modul.CzyTak(za) and za or "")) or (parametry_modul.CzyTak(za) and ("|"..adres..za) or "")).."]]"..po_linku;
end;
if not bez_znacznikow then
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,czy_naglowek_strony,czy_url,czy_parametry_strony);
else
return link;
end;
end;
end;
local wynik=Bez_przetwarzania_lub_bez_znaczkow();if(wynik)then return wynik;end;
return linki_modul.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url,nil,nil,nil,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
end;
function p.UzyskajKodWikiLinku(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local linki_modul=require("Module:Linki");
local klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nazwa_strony_linku,naglowek_strony,nazwa,za,po,czy_wewnetrzny_z_fullurl,parametry_strony,wersja_linku,czy_url=linki_modul["GanerujSkładoweURL"](args);
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku);
local pudelko_modul=require("Module:Pudełko");
kod_jezyka_koncowy=parametry_modul.CzyTak(kod_jezyka_koncowy) and kod_jezyka_koncowy or pudelko_modul["Kod języka tego projektu"]();
kod_projektu_koncowy=parametry_modul.CzyTak(kod_projektu_koncowy) and kod_projektu_koncowy or pudelko_modul["Kod projektu tego projektu"]();
local aktywny;
local czy_nazwa=parametry_modul.CzyTak(nazwa_strony_linku);
if(not czy_nazwa or not mw.ustring.match(nazwa_strony_linku,"_+"))then
if((not czy_nazwa)and((not kod_jezyka_koncowy)or(kod_jezyka_koncowy==pudelko_modul["Kod języka tego projektu"]()))and((not kod_projektu_koncowy)or(kod_projektu_koncowy==pudelko_modul["Kod projektu tego projektu"]())))then
if((parametry_modul.CzyTak(naglowek_strony)) or (not args["strona"] or args["strona"]=="") or ((args["strona"])and(mw.ustring.match(args["strona"],"^[_%s]*#[_%s]*$"))or(nil)))then
aktywny=false;
local nazwy_modul=require("Module:Nazwy");
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]();
end;
else
aktywny=true;
end;
else
aktywny=true;
local pudelko_modul=require("Module:Pudełko");
nazwa_strony_linku=pudelko_modul["Strona główna tego projektu"]();
end;
local nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy);
---
local czy_parametry_strony=parametry_modul.CzyTak(parametry_strony);
local czy_naglowek_strony=parametry_modul.CzyTak(naglowek_strony);
local czy_pusta_nazwa_strony_linku=parametry_modul.CzyTak(nazwa_strony_linku);
if(not czy_pusta_nazwa_strony_linku)then
local linki_modul=require("Module:Linki");
nazwa_strony_linku,_=linki_modul["PrzetłumaczZnakZastępczyNaStronę"]("","",kod_jezyka_koncowy,kod_projektu_koncowy,czy_naglowek_strony);
end;
----
local klasa=wiki_modul.KodyKlasStronyNaDanejWiki{["klucz projektu"]=nil,["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["strona"]=nazwa_strony_linku,["nagłówek"]=czy_naglowek_strony,["url"]=czy_url,["parametry"]=czy_parametry_strony,["aktywny"]=aktywny,};
return klasa;
end;
p["LinkOgólne"]=function(frame)
local parametry_modul=require("Module:Parametry");
local args=parametry_modul.PobierzArgsParametry(frame);
local miano_przestrzeni_nazw=args["miano przestrzeni nazw"] or args["przestrzeń"] or args["f"];
local czy_dyskusja=parametry_modul.CzyTak(args["dyskusja"] or args["d"]);
local klucz_projektu_do_projektu_linku=args["klucz projektu"] or args["k"];
local kod_jezyka_do_projektu_linku=args["kod języka"] or args["kj"];
local kod_projektu_do_projektu_linku=args["kod projektu"] or args["kp"];
local bez_znacznikow=parametry_modul.CzyTak(args["bez znaczników"]) or parametry_modul.CzyTak(args["bz"]);
local wyswietl_miano_przestrzeni_nazw=args["wyświetl miano przestrzeni nazw"] or args["wyświetl"] or args["w"];
local nazwa_strony_linku=args[1] or "_";
local czy_nazwa=parametry_modul.CzyTak(args[2]);
local czy_analiza=parametry_modul.CzyTak(args["analiza"]) or parametry_modul.CzyTak(args["a"]);
local z_kodowaniem=parametry_modul.CzyTak(args["uri"]) or parametry_modul.CzyTak(args["u"]);
local nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna;
local czy_niepusta_nazwa_przestrzeni_nazw;
local nazwy_modul=require("Module:Nazwy");
local czy_aktualna_wiki;
if(not czy_analiza)then
local tabela_nazw={};
miano_przestrzeni_nazw=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or "";
nowa_nazwa_strony_linku,hash,czy_kreska_dolna,prze_nie_main,czy_strona_lokalna=p.RozwinKreskaPoziomowa(miano_przestrzeni_nazw,nazwa_strony_linku,nil,nil,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,czy_analiza,tabela_nazw,function(nowa_nazwa_strony_linku,czy_dyskusja,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,prze_nie_main)
if(czy_dyskusja)then
local tabela_nazw_temp={};tabela_nazw_temp.czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;
nowa_nazwa_strony_linku=nazwy_modul["NAZWASTRONYDYSKUSJI"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["bez zmiany adresu"]="tak",},tabela_nazw_temp);
end;
return nowa_nazwa_strony_linku;
end);
czy_aktualna_wiki=tabela_nazw.czy_aktualna_wiki;
else
prze_nie_main=((miano_przestrzeni_nazw)and((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw~="(main)"))) and miano_przestrzeni_nazw or nil;
nowa_nazwa_strony_linku=prze_nie_main and((miano_przestrzeni_nazw..":")..nazwa_strony_linku) or nazwa_strony_linku;
end;
local tabela_nazw={};tabela_nazw.czy_aktualna_wiki=czy_aktualna_wiki;
local czy_biezaca;
local czy_nazwa_strony_pusta;
local wiki_modul=require("Module:Wiki");
if((czy_dyskusja)or(czy_analiza))then
czy_nazwa_strony_pusta=mw.ustring.match(nazwa_strony_linku,"^[%s_:]*$");
if((not czy_nazwa_strony_pusta)or((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~="")))then
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
local nazwy_modul=require("Module:Nazwy");
if(czy_biezaca)then
miano_przestrzeni_nazw=nazwy_modul[((czy_dyskusja)and(czy_analiza)) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"](nowa_nazwa_strony_linku,tabela_nazw);
else
miano_przestrzeni_nazw=nazwy_modul[((czy_dyskusja)and(czy_analiza)) and "PRZESTRZEŃDYSKUSJI" or "NAZWAPRZESTRZENI"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
end;
czy_niepusta_nazwa_przestrzeni_nazw=parametry_modul.CzyTak(miano_przestrzeni_nazw);
end;
elseif(hash or czy_kreska_dolna)then
czy_niepusta_nazwa_przestrzeni_nazw=true;
elseif(not prze_nie_main)then
miano_przestrzeni_nazw="";
czy_niepusta_nazwa_przestrzeni_nazw=false;
else
miano_przestrzeni_nazw=prze_nie_main;
czy_niepusta_nazwa_przestrzeni_nazw=true;
end;
local techniczne_modul=require("Module:Techniczne");
local czy_wyswietl_miano_przestrzeni_nazw=parametry_modul.CzyTak(wyswietl_miano_przestrzeni_nazw);
local function NazwaLinkuDoStrony()
local function CzyPrzestrzen(miano_przestrzeni_nazw)
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
local miano_przestrzeni_nazw;
if(czy_biezaca)then
miano_przestrzeni_nazw=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
else
miano_przestrzeni_nazw=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or miano_przestrzeni_nazw;
end;
return miano_przestrzeni_nazw;
end;
local function Nazwa2(nazwa,czy_wyswietl_miano_przestrzeni_nazw)
if(czy_wyswietl_miano_przestrzeni_nazw)then
return nazwa;
else
nazwa=nazwy_modul["NAZWASTRONY"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
if(tabela_nazw.m)then
nazwa=mw.getContentLanguage():lcfirst(nazwa);
end;
return nazwa;
end;
end;
local function Nazwa(nazwa)
local ile;local ile2=0;
if((czy_analiza) and (not bez_przetwarzania))then
nazwa=techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa) or nazwa;
nazwa,ile=mw.ustring.gsub(nazwa,"^[%s_:]*(.+)[%s_:]*:[%s_]*$",function(nazwaprzestrzeni)
local nazwa_przestrzeni=CzyPrzestrzen(nazwaprzestrzeni)
if(nazwa_przestrzeni)then
return nazwa_przestrzeni..":".."%s";
end;
ile2=ile+1;
end);
else
nazwa,ile=mw.ustring.gsub(nazwa,"^[%s_:]*(.+)[%s_:]*:[%s_]*$",function(nazwaprzestrzeni)
local nazwa_przestrzeni=CzyPrzestrzen(nazwaprzestrzeni)
if(nazwa_przestrzeni)then
return nowa_nazwa_strony_linku;
end;
ile2=ile2+1;
end);
end;
if(ile-ile2==0)then
return Nazwa2(nazwa,czy_wyswietl_miano_przestrzeni_nazw);
else
return nazwa;
end;
end;
local function NazwaFormat(wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta)
if((not czy_analiza)or(bez_przetwarzania))then return nil;end;
if(czy_wyswietl_miano_przestrzeni_nazw)then
if(czy_nazwa_strony_pusta)then
if(not miano_przestrzeni_nazw)then
return "%s:%s";
else
return miano_przestrzeni_nazw..((miano_przestrzeni_nazw~="") and ":" or "").."%s";
end;
end;
else
if(czy_nazwa_strony_pusta)then
return "%s";
end;
end;
end;
if(czy_niepusta_nazwa_przestrzeni_nazw)then
if(czy_wyswietl_miano_przestrzeni_nazw)then
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
nazwa_strony_linku=((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa_strony_linku) or nazwa_strony_linku;
if((czy_nazwa_strony_pusta)and(czy_analiza)and(not bez_przetwarzania))then nazwa_strony_linku="%s";end;
----
local aliases;
local alias=args["alias miana przestrzeni nazw"] or args["alias"] or args["i"];
local czy_alias=parametry_modul.CzyTak(alias);
if(czy_alias)then
if((not czy_dyskusja)and(not czy_analiza))then
local wiki_modul=require("Module:Wiki");
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
end;
if(czy_biezaca)then
local uchwyt=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,uchwyt="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak"}
if(uchwyt)then
aliases=uchwyt.aliases;
--miano_przestrzeni_nazw=uchwyt.name;
end;
else
local uchwyt=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,uchwyt="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(uchwyt)then
if(parametry_modul.TypeTable(uchwyt))then
aliases=uchwyt.aliasy;
--miano_przestrzeni_nazw=uchwyt[1];
else
--miano_przestrzeni_nazw=uchwyt;
aliases={};
end;
end;
end;
end;
----
if((czy_alias)and(parametry_modul.CzyTak(aliases)))then
if(parametry_modul["CzySąElementyNumerowaneTablicy"](aliases))then
alias=mw.getContentLanguage():uc(alias);
for _,value in pairs(aliases)do
if((mw.getContentLanguage():uc(value))==alias)then
return alias..":"..nazwa_strony_linku;
end;
end;
end;
end;
if(not miano_przestrzeni_nazw)then return nil;end;
local miano_przestrzeni_nazw_zmienna_tymczasowa;
if(czy_biezaca)then
miano_przestrzeni_nazw_zmienna_tymczasowa=nazwy_modul.Np{nazwa=miano_przestrzeni_nazw,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
nazwa_strony_linku=((miano_przestrzeni_nazw_zmienna_tymczasowa)and(not czy_nazwa_strony_pusta)and(not prze_nie_main)) and nazwy_modul["NAZWASTRONY"](nowa_nazwa_strony_linku,tabela_nazw) or nazwa_strony_linku;
else
miano_przestrzeni_nazw_zmienna_tymczasowa=nazwy_modul.NpDane{nazwa=miano_przestrzeni_nazw,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,["po polsku"]="tak",["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",} or miano_przestrzeni_nazw;
nazwa_strony_linku=((miano_przestrzeni_nazw_zmienna_tymczasowa)and(not czy_nazwa_strony_pusta)and(not prze_nie_main)) and nazwy_modul["NAZWASTRONY"]{nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,tabela_nazw} or nazwa_strony_linku;
end;
if(not miano_przestrzeni_nazw_zmienna_tymczasowa)then return nil;end;
return ((miano_przestrzeni_nazw_zmienna_tymczasowa~="") and (miano_przestrzeni_nazw_zmienna_tymczasowa..":") or "")..((((czy_analiza)and(not bez_przetwarzania))and(nazwa_strony_linku=="")) and "%s" or nazwa_strony_linku);
else
local nazwa=hash and("#"..hash) or nowa_nazwa_strony_linku;
nazwa=((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](nazwa) or nazwa;
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
else
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
if((czy_nazwa_strony_pusta)and((czy_analiza)and(not bez_przetwarzania)))then
return "%s";
end;
local nazwa=nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
else
if((czy_nazwa_strony_pusta)and((czy_analiza)and(not bez_przetwarzania)))then
return "%s";
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa=hash and ("#"..hash) or nazwy_modul["NAZWASTRONY"]({nazwa=nowa_nazwa_strony_linku,["klucz projektu"]=klucz_projektu_do_projektu_linku,["kod języka"]=kod_jezyka_do_projektu_linku,["kod projektu"]=kod_projektu_do_projektu_linku,},tabela_nazw);
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
end;
else
if(not czy_nazwa)then
if((not czy_kreska_dolna)and(not hash))then
local wynik_nazwa=NazwaFormat(czy_wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta);
if(wynik_nazwa)then return wynik_nazwa;end;
local nazwa=nowa_nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
else
if(czy_nazwa_strony_pusta)then
local wynik_nazwa=NazwaFormat(czy_wyswietl_miano_przestrzeni_nazw,miano_przestrzeni_nazw,czy_nazwa_strony_pusta);
if(wynik_nazwa)then return wynik_nazwa;end;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa=hash and("#"..hash) or nowa_nazwa_strony_linku;
nazwa=Nazwa(nazwa);
return nazwa;
end;
end;
end;
end;
local bez_przetwarzania=parametry_modul.CzyTak(args["bez przetwarzania"]) or parametry_modul.CzyTak(args["bp"]);
local bez_przetwarzania_kodow=parametry_modul.CzyTak(args["bez przetwarzania kodów"]) or parametry_modul.CzyTak(args["bk"]);
local bez_przetwarzania=bez_przetwarzania or ((not czy_analiza)and(((hash)or(czy_kreska_dolna)) and "tak" or (((miano_przestrzeni_nazw)and(miano_przestrzeni_nazw~=""))or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*$")or(mw.ustring.match(nazwa_strony_linku,"^[%s_]*[^:#]-[^%s_#:][%s_]*#(.*)$"))))) or nil);
local nazwa=czy_nazwa and (args[2] and (((czy_analiza) and (not bez_przetwarzania)) and techniczne_modul["TekstBezOdwołańDoPodstawieńElementówWFunkcjiFormat"](args[2]) or args[2]) or nil) or NazwaLinkuDoStrony();
local po=args["po"] or args["p"];
local za=args["za"] or args["z"];
if(not bez_przetwarzania)then
return p.Link(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,hash,nazwa,za,po,false,nil,nil,nil,true,wyswietl_miano_przestrzeni_nazw,czy_dyskusja,bez_przetwarzania_kodow,bez_znacznikow,z_kodowaniem);
else
local link=p.TworzLinkBezPrzetwarzania(klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,(not czy_strona_lokalna) and nowa_nazwa_strony_linku or (hash and "" or nowa_nazwa_strony_linku),hash,nazwa,za,po,z_kodowaniem);
if(not bez_znacznikow)then
return p.LinkWikidane(link,klucz_projektu_do_projektu_linku,kod_jezyka_do_projektu_linku,kod_projektu_do_projektu_linku,nowa_nazwa_strony_linku,hash or ((not czy_kreska_dolna) and mw.ustring.match(nazwa_strony_linku,"#") or nil),nil,nil);
else
return link;
end;
end;
end;
function p.ZamianaKategoriiNaLinki(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr("tekst") or PobierzParametr(1);
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=wm.loadData("Module:Nazwy/Np");
local kategoria_polska=nazwy_np_modul.Category;
local wzor_kategorii_polskiej=techniczne_modul["WzórDanejPrzestrzeniNazw"](kategoria_polska)
tekst=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1|%2]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*[Cc][Aa][Tt][Ee][Gg][Oo][Rr][Yy]%s*:%s*([^|%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*|%s*([^%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1|%2]]");
tekst=mw.ustring.gsub(tekst,"%[%[%s*"..wzor_kategorii_polskiej.."%s*:%s*([^|%[%]]+)%s*%]%]","[[:"..kategoria_polska..":%1]]");
return tekst;
end;
return p;
o0znepbio97vogny1s78m16eotf3rwx
Szablon:Pudełko komórkowe/styles.css
10
56473
546458
533378
2026-06-11T23:23:33Z
Persino
2851
546458
sanitized-css
text/css
/* [[Szablon:Pudełko komórkowe]] i [[Szablon:Pudełko ramkowe]] */
.szablonPudełko > .mw-heading{
display:flex !important;
flex-direction:row !important;
width:auto;
margin:unset;
padding:unset;
font:unset;
border:unset;
overflow:unset;
border-bottom:1px solid #aaaaaa;
}
.szablonPudełko > .mw-heading > h3{
border-bottom:0 !important;
}
.szablonPudełko > h2{
display:flex !important;
flex-direction:row !important;
width:auto !important;
border-bottom:1px solid #aaaaaa;
}
.szablonPudełko > .mw-heading > *,
.szablonPudełko > h2{
display:block;
padding: 0.25rem 0.3125rem;
margin: 0 !important;
font: 1.0833125rem Verdana,sans-serif;
font-weight:bold;
border:0;
text-align:left;
line-height:1.0rem;
box-sizing:border-box;
}
.szablonPudełko > .mw-heading > h2 > div.kontener-nagłówka,
.szablonPudełko > h2 > div.kontener-nagłówka{
display:inline-block;
box-sizing:border-box;
width:100%;
}
.szablonPudełko > .mw-heading > .numeracja,
.szablonPudełko > h2 > .numeracja{
font-size:100%;
padding-right:0;
width:auto;
margin-top:0 !important;
margin-bottom:auto !important;
white-space:nowrap;
}
.szablonPudełko > .mw-heading > .numeracja + *,
.szablonPudełko > h2 > .numeracja + *{
padding-left:0;
}
.szablonPudełko > .mw-heading > h2,
.szablonPudełko > h2{
font-size-adjust:none;
letter-spacing:normal;
word-spacing:normal;
text-align:justify;
text-justify:inter-word;
word-wrap:break-word;
word-break:break-word;
hyphens:auto;
/**/
width:100%;
}
.szablonPudełko > .mw-heading > .mw-editsection,
.szablonPudełko > h2 > .mw-editsection{
display:none;
}
.szablonPudełko > .mw-heading > h2 > span[data-mw-comment-start],
.szablonPudełko > .mw-heading > h2 > span[data-mw-comment-end]{
display:inline;
}
.szablonPudełko > .zawartość p{
margin: 0.4em 0 0.5em 0;
}
.szablonPudełko > .zawartość > p:first-child,
.szablonPudełko > .zawartość > ul:first-child,
.szablonPudełko > .zawartość > ol:first-child{
margin-top:0;
}
.szablonPudełko > .zawartość > p:last-child,
.szablonPudełko > .zawartość > ul:last-child,
.szablonPudełko > .zawartość > ol:last-child{
margin-bottom:0;
}
.szablonPudełko > .zawartość,
.szablonPudełko > .zawartość p,
.szablonPudełko > .zawartość > ul,
.szablonPudełko > .zawartość > ol{
font-size:inherit;
line-height:1.25em;
}
.szablonPudełko > .zawartość{
padding:0.3125rem;
padding-top:0.4375rem;
}
.szablonPudełko > .zawartość > p:first-child,
.szablonPudełko > .zawartość > div.szablon_kolumny > p:first-child,
.szablonPudełko > .zawartość > figure.mw-halign-left:first-child + p,
.szablonPudełko > .zawartość > div.szablon_kolumny > figure.mw-halign-left:first-child + p,
.szablonPudełko > .zawartość > figure.mw-halign-right:first-child + p,
.szablonPudełko > .zawartość > div.szablon_kolumny > figure.mw-halign-right:first-child + p{
margin-top:0;
}
.szablonPudełko > .zawartość > p:last-child,
.szablonPudełko > .zawartość > div.szablon_kolumny > p:not(.br-clear):not(.div-clear):not(.span-clear):not(.hr-clear):last-child{
margin-bottom:0;
}
.szablonPudełko > .grafika{
float:right;
margin:0.625rem 0.125rem 0 0.125rem;
}
.szablonPudełko > .szablon_plik,
.szablonPudełko > figure{
margin:0 !important;
margin-left:0.125rem !important;
}
.szablonPudełko > .zawartość > ul li,
.szablonPudełko > .zawartość > ol li{
margin-bottom:0.125em !important;
}
.szablonPudełko > .zawartość > ul ul li:first-child,
.szablonPudełko > .zawartość > ul ol li:first-child,
.szablonPudełko > .zawartość > ol ul li:first-child,
.szablonPudełko > .zawartość > ol ol li:first-child{
margin-top:0.125em !important;
}
.szablonPudełko > .zawartość > p{
padding-bottom:0;
}
.szablonPudełko > .zawartość > p + ul,
.szablonPudełko > .zawartość > p + ol,
.szablonPudełko > .zawartość > p + .hlist{
margin-top:-0.3em !important;
}
.szablonPudełko > .zawartość > ul + p,
.szablonPudełko > .zawartość > ol + p,
.szablonPudełko > .zawartość > .hlist + p{
margin-top:0.25em !important;
}
.szablonPudełko > .zawartość > .hlist *{
font-size:inherit;
line-height:1.12em;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.szablonPudełko > .nagłówekPudełka{
margin-right:0 !important;
}
}
.szablonPudełko > .mw-heading,
.szablonPudełko > h2{
min-width: auto;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
9jdw49f2cjpgcisthtadfc4s53c2n3u
546459
546458
2026-06-11T23:26:07Z
Persino
2851
546459
sanitized-css
text/css
/* [[Szablon:Pudełko komórkowe]] i [[Szablon:Pudełko ramkowe]] */
.szablonPudełko > .mw-heading{
display:flex !important;
flex-direction:row !important;
width:auto;
margin:unset;
padding:unset;
font:unset;
border:unset;
overflow:unset;
border-bottom:1px solid #aaaaaa;
}
.szablonPudełko > .mw-heading > h2{
border-bottom:0 !important;
}
.szablonPudełko > h2{
display:flex !important;
flex-direction:row !important;
width:auto !important;
border-bottom:1px solid #aaaaaa;
}
.szablonPudełko > .mw-heading > *,
.szablonPudełko > h2{
display:block;
padding: 0.25rem 0.3125rem;
margin: 0 !important;
font: 1.0833125rem Verdana,sans-serif;
font-weight:bold;
border:0;
text-align:left;
line-height:1.0rem;
box-sizing:border-box;
}
.szablonPudełko > .mw-heading > h2 > div.kontener-nagłówka,
.szablonPudełko > h2 > div.kontener-nagłówka{
display:inline-block;
box-sizing:border-box;
width:100%;
}
.szablonPudełko > .mw-heading > .numeracja,
.szablonPudełko > h2 > .numeracja{
font-size:100%;
padding-right:0;
width:auto;
margin-top:0 !important;
margin-bottom:auto !important;
white-space:nowrap;
}
.szablonPudełko > .mw-heading > .numeracja + *,
.szablonPudełko > h2 > .numeracja + *{
padding-left:0;
}
.szablonPudełko > .mw-heading > h2,
.szablonPudełko > h2{
font-size-adjust:none;
letter-spacing:normal;
word-spacing:normal;
text-align:justify;
text-justify:inter-word;
word-wrap:break-word;
word-break:break-word;
hyphens:auto;
/**/
width:100%;
}
.szablonPudełko > .mw-heading > .mw-editsection,
.szablonPudełko > h2 > .mw-editsection{
display:none;
}
.szablonPudełko > .mw-heading > h2 > span[data-mw-comment-start],
.szablonPudełko > .mw-heading > h2 > span[data-mw-comment-end]{
display:inline;
}
.szablonPudełko > .zawartość p{
margin: 0.4em 0 0.5em 0;
}
.szablonPudełko > .zawartość > p:first-child,
.szablonPudełko > .zawartość > ul:first-child,
.szablonPudełko > .zawartość > ol:first-child{
margin-top:0;
}
.szablonPudełko > .zawartość > p:last-child,
.szablonPudełko > .zawartość > ul:last-child,
.szablonPudełko > .zawartość > ol:last-child{
margin-bottom:0;
}
.szablonPudełko > .zawartość,
.szablonPudełko > .zawartość p,
.szablonPudełko > .zawartość > ul,
.szablonPudełko > .zawartość > ol{
font-size:inherit;
line-height:1.25em;
}
.szablonPudełko > .zawartość{
padding:0.3125rem;
padding-top:0.4375rem;
}
.szablonPudełko > .zawartość > p:first-child,
.szablonPudełko > .zawartość > div.szablon_kolumny > p:first-child,
.szablonPudełko > .zawartość > figure.mw-halign-left:first-child + p,
.szablonPudełko > .zawartość > div.szablon_kolumny > figure.mw-halign-left:first-child + p,
.szablonPudełko > .zawartość > figure.mw-halign-right:first-child + p,
.szablonPudełko > .zawartość > div.szablon_kolumny > figure.mw-halign-right:first-child + p{
margin-top:0;
}
.szablonPudełko > .zawartość > p:last-child,
.szablonPudełko > .zawartość > div.szablon_kolumny > p:not(.br-clear):not(.div-clear):not(.span-clear):not(.hr-clear):last-child{
margin-bottom:0;
}
.szablonPudełko > .grafika{
float:right;
margin:0.625rem 0.125rem 0 0.125rem;
}
.szablonPudełko > .szablon_plik,
.szablonPudełko > figure{
margin:0 !important;
margin-left:0.125rem !important;
}
.szablonPudełko > .zawartość > ul li,
.szablonPudełko > .zawartość > ol li{
margin-bottom:0.125em !important;
}
.szablonPudełko > .zawartość > ul ul li:first-child,
.szablonPudełko > .zawartość > ul ol li:first-child,
.szablonPudełko > .zawartość > ol ul li:first-child,
.szablonPudełko > .zawartość > ol ol li:first-child{
margin-top:0.125em !important;
}
.szablonPudełko > .zawartość > p{
padding-bottom:0;
}
.szablonPudełko > .zawartość > p + ul,
.szablonPudełko > .zawartość > p + ol,
.szablonPudełko > .zawartość > p + .hlist{
margin-top:-0.3em !important;
}
.szablonPudełko > .zawartość > ul + p,
.szablonPudełko > .zawartość > ol + p,
.szablonPudełko > .zawartość > .hlist + p{
margin-top:0.25em !important;
}
.szablonPudełko > .zawartość > .hlist *{
font-size:inherit;
line-height:1.12em;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.szablonPudełko > .nagłówekPudełka{
margin-right:0 !important;
}
}
.szablonPudełko > .mw-heading,
.szablonPudełko > h2{
min-width: auto;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
qdkze9x5x6h10cxnlfrl9ccx0apcu9y
Szablon:Opis/styles.css
10
56480
546455
503128
2026-06-11T22:53:08Z
Persino
2851
546455
sanitized-css
text/css
/* Kolorowy nagłówek tytułowy z logiem Wikibooks w tle */
.opis .nagłówek {
background: url("//upload.wikimedia.org/wikipedia/commons/d/d7/Bookbar2.png") right;
background-repeat: no-repeat;
margin:0;
background-color:#F0F0F0;
border:1px solid #a3b0bf;
text-align:left;
color:#000;
padding:0.3rem 0.4rem;
}
.opis,
.opis p{
font-size:inherit;
line-height:1.25em;
}
.opis .nagłówek > h3 > .editsection,
.opis .nagłówek > .mw-heading.mw-heading3 > .editsection {
display: none;
}
.opis .nagłówek > .mw-heading.mw-heading3{
padding:0;
margin:0;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
font-size:1.0rem;
line-height:1.4em;
font-weight:bold;
}
.opis .nagłówek,
.opis .nagłówek > h3,
.opis .nagłówek > h3 > div.kontener-nagłówka
.opis .nagłówek > .mw-heading.mw-heading3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka {
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
max-width:100%;
min-width:auto;
}
.opis .nagłówek > .mw-heading.mw-heading3{
display:flex !important;
flex-direction:row !important;
align-items:center;
}
.opis .nagłówek > h3 > .numeracja
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja{
display:block;
width:auto;
}
.opis .nagłówek > h3{
display:flex;
flex-direction:row;
}
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
display:flex !important;
flex-direction:column;
align-items: stretch;
justify-content: center;
width:100%;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
margin:auto 0;
}
.opis .nagłówek > h3 > div.kontener-nagłówka,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka{
display:inline-block;
width:100%;
box-sizing:border-box;
}
.opis > .tekst{
margin:0.3125rem 0;
padding:0 0.3125rem;
box-sizing:border-box;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
13j2928364ij89s1qx8wdtuwedo31tu
546456
546455
2026-06-11T22:55:46Z
Persino
2851
546456
sanitized-css
text/css
/* Kolorowy nagłówek tytułowy z logiem Wikibooks w tle */
.opis .nagłówek {
background: url("//upload.wikimedia.org/wikipedia/commons/d/d7/Bookbar2.png") right;
background-repeat: no-repeat;
margin:0;
background-color:#F0F0F0;
border:1px solid #a3b0bf;
text-align:left;
color:#000;
padding:0.3rem 0.4rem;
}
.opis,
.opis p{
font-size:inherit;
line-height:1.25em;
}
.opis .nagłówek > h3 > .editsection,
.opis .nagłówek > .mw-heading.mw-heading3 > .editsection {
display: none;
}
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3{
padding:0;
margin:0;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
font-size:1.0rem;
line-height:1.4em;
font-weight:bold;
}
.opis .nagłówek,
.opis .nagłówek > h3,
.opis .nagłówek > h3 > div.kontener-nagłówka
.opis .nagłówek > .mw-heading.mw-heading3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka {
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
max-width:100%;
min-width:auto;
}
.opis .nagłówek > .mw-heading.mw-heading3{
display:flex !important;
flex-direction:row !important;
align-items:center;
}
.opis .nagłówek > h3 > .numeracja
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja{
display:block;
width:auto;
}
.opis .nagłówek > h3{
display:flex;
flex-direction:row;
}
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
display:flex !important;
flex-direction:column;
align-items: stretch;
justify-content: center;
width:100%;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
margin:auto 0;
}
.opis .nagłówek > h3 > div.kontener-nagłówka,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka{
display:inline-block;
width:100%;
box-sizing:border-box;
}
.opis > .tekst{
margin:0.3125rem 0;
padding:0 0.3125rem;
box-sizing:border-box;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
4jag4hmb6ksk5kt8p4fv1fn6u72v14l
546457
546456
2026-06-11T22:59:00Z
Persino
2851
546457
sanitized-css
text/css
/* Kolorowy nagłówek tytułowy z logiem Wikibooks w tle */
.opis .nagłówek {
background: url("//upload.wikimedia.org/wikipedia/commons/d/d7/Bookbar2.png") right;
background-repeat: no-repeat;
margin:0;
background-color:#F0F0F0;
border:1px solid #a3b0bf;
text-align:left;
color:#000;
padding:0.3rem 0.4rem;
}
.opis,
.opis p{
font-size:inherit;
line-height:1.25em;
}
.opis .nagłówek > h3 > .editsection,
.opis .nagłówek > .mw-heading.mw-heading3 > .editsection {
display: none;
}
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3{
padding:0;
margin:0;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
font-size:1.0rem;
line-height:1.4em;
font-weight:bold;
}
.opis .nagłówek,
.opis .nagłówek > h3,
.opis .nagłówek > h3 > div.kontener-nagłówka,
.opis .nagłówek > .mw-heading.mw-heading3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka {
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
max-width:100%;
min-width:auto;
}
.opis .nagłówek > .mw-heading.mw-heading3{
display:flex !important;
flex-direction:row !important;
align-items:center;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja{
display:block;
width:auto;
}
.opis .nagłówek > h3{
display:flex;
flex-direction:row;
}
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
display:flex !important;
flex-direction:column;
align-items: stretch;
justify-content: center;
width:100%;
}
.opis .nagłówek > h3 > .numeracja,
.opis .nagłówek > h3,
.opis .nagłówek > .mw-heading.mw-heading3 > .numeracja,
.opis .nagłówek > .mw-heading.mw-heading3 > h3{
margin:auto 0;
}
.opis .nagłówek > h3 > div.kontener-nagłówka,
.opis .nagłówek > .mw-heading.mw-heading3 > h3 > div.kontener-nagłówka{
display:inline-block;
width:100%;
box-sizing:border-box;
}
.opis > .tekst{
margin:0.3125rem 0;
padding:0 0.3125rem;
box-sizing:border-box;
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
5z37kn3z6uwjjqtsadp3201fuh2z7ju
Moduł:StronicowyParser/Potrzebne
828
58155
546451
546215
2026-06-11T19:35:15Z
Persino
2851
546451
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return przekierowanie,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|tytuł=<div class="tytuł_spisu_treści" style="text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;">'..spis_tresci..'</div>|spis='..twor_listy..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,nazwa_modulu,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,czy_nie_odstepy)
if(not tekst)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local html_modul=require("Module:Html");
tekst=html_modul.DecodeHtml(tekst,true,nil,nil,czy_nie_odstepy);
return tekst;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
----
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
return wynik;
end;
return true;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil)
parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
strona=strona and p.DekodowanieTekstu(strona,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or strona;
podstrona=podstrona and p.DekodowanieTekstu(podstrona,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or podstrona;
-----
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(nazwa)then
local html_modul=require("Module:Html");
nazwa=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(nazwa);
nazwa=parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",[4]="tak",};
end;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
o9uxpz43r9lnugo5sz2vatmabwux1jh
546482
546451
2026-06-12T05:51:34Z
Persino
2851
546482
Scribunto
text/plain
local p={};
function p.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw_spisu_rzeczy_szablon,kod_num)
local numer_parametru;
if(not tabela_nazw_spisu_rzeczy_szablon.numer_parametru)then
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_spisu_rzeczy;
if(not kod_num)then
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
else
tab_spisu_rzeczy=stronicowyparser_obiekty_modul.szablony_linkowe_spisu_rzeczy;
end;
numer_parametru=tab_spisu_rzeczy[nazwa_szablonu];
if(not numer_parametru)then return nil;end;
tabela_nazw_spisu_rzeczy_szablon.numer_parametru=numer_parametru;
else
numer_parametru=tabela_nazw_spisu_rzeczy_szablon.numer_parametru;
end;
local indeks=numer_parametru[numer];
for p,_ in ipairs(indeks) do
local parametr=tabela_parametrow_szablonu[indeks[p]];
if(parametr)then
return parametr;
end;
end;
return nil;
end;
function p.LiczonyHNumer()
local tab={};
local h_numer_zapamietane=nil;
--local ostatnie_poprz=nil;
return function(h_numer,h_numer_nowe)
if(h_numer==0)then
if(#tab>0)then
local h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
return ostatnie_poprz;
end;
return nil;
elseif(h_numer<0)then
h_numer=math.abs(h_numer);
end;
local ostatnie;---=tab[h_numer];
local max_h_numer=nil;local min_h_numer=nil;
local ostatnie_max;local ostatnie_min;local ostatnie_ost;local ostatnie_ost_prawda=true;
for i=#tab,1,-1 do
----
local h_numer_pos,ostatnie_pos=unpack(tab[i]);
if(ostatnie_ost_prawda)then
if(h_numer_pos==h_numer)then
ostatnie_ost=ostatnie_pos;
break;
end;
ostatnie_ost_prawda=nil;
end;
----
if((h_numer>h_numer_pos)and((max_h_numer or 0)<h_numer_pos))then
if((h_numer_pos or 0)<=(max_h_numer or h_numer))then
ostatnie_max=ostatnie_pos;
max_h_numer=h_numer_pos;
end;
end;
end;
if(ostatnie_ost)then
ostatnie=ostatnie_ost;
else
ostatnie=(ostatnie_max or 0)+1;
end;
local h_numer_poprz,ostatnie_poprz=nil,nil;
if(#tab>0)then
h_numer_poprz,ostatnie_poprz=unpack(tab[#tab]);
end;
if(ostatnie>(ostatnie_poprz or 0)+1)then
ostatnie=(ostatnie_poprz or 0)+1;
end;
table.insert(tab,{h_numer,ostatnie,});
if(h_numer_nowe)then
local roznica=h_numer_nowe-ostatnie;
if(roznica==0)then
return ostatnie;
end;
local tab2={};
for i,tabs in pairs(tab)do
local name,value=unpack(tabs);
tab2[i]={name,value+roznica,};
end;
tab=tab2;
return h_numer_nowe;
end;
return ostatnie;
end;
end;
function p.PoziomAdresu(adres)
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
end;
return i;
end;
function p.NazwaNadStrony(adres,numer)
if((numer)and(numer==0))then return nil;end;
if((numer)and(numer<1)or(numer~=math.floor(numer)))then return nil;end;
local lens=#adres;
local i=1;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
end;
if(i==numer)then
return mw.ustring.sub(adres,1,p-1);
end;
end;
return adres;
end;
function p.SubNazwaNadStrony(adres,numer,krok)
if((not numer)or(numer<1)or(numer~=math.floor(numer)))then return adres;end;
krok=krok or 1;
if((krok<1)or(krok~=math.floor(krok)))then return adres;end;
local lens=#adres;
local i=1;
local a=nil;local b=nil;
for p=1, lens,1 do
local znak=mw.ustring.sub(adres,p,p);
if(znak=="/")then
i=i+1;
if(i==numer)then
if(not a)then a=p+1;end;
end;
if(i==numer+krok)then
if(not b)then b=p-1;break;end;
end;
end;
end;
if(not a)then a=1;end;
if(not b)then b=lens;end;
return mw.ustring.sub(adres,a,b);
end;
function p.ParametryKonteneraWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
local nazwa_przestrzeni=self.args["nazwa przestrzeni nazw"];
local nazwa_jednostki=self.args["nazwa jednostki"];
if(((nazwa_przestrzeni)and(nazwa_jednostki))or((nazwa_przestrzeni)and(not nazwa_jednostki))or((not nazwa_przestrzeni)and(nazwa_jednostki)))then
local html_modul=require("Module:Html");
if(nazwa_jednostki)then
local tabela_nazw_adresu={};
self.naglowek=html_modul["NagłówekStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
self.parametry=html_modul["ParametryStronyAdresu"](nazwa_jednostki,true,tabela_nazw_adresu);
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=((nazwa_przestrzeni)and ((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "") or nazwy_modul["NAZWAPRZESTRZENI"]());
local nazwa_jednostki=(((nazwa_jednostki)and(nazwa_jednostki~=""))and nazwa_jednostki or nazwy_modul["NAZWASTRONY"]());
local pelna_nazwa_jednostki=((nazwa_przestrzeni~="")and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
pelna_nazwa_jednostki=html_modul.DecodeHtml(pelna_nazwa_jednostki,true);
pelna_nazwa_jednostki=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](pelna_nazwa_jednostki);
---
local techniczne_modul=require("Module:Techniczne");
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local nazwa_modulu=nazwy_modul["NazwaModułu"](tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni,tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_woluminu,tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu);
pelna_nazwa_jednostki=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=pelna_nazwa_jednostki,[2]=nazwa_modulu,};
pelna_nazwa_jednostki=nazwy_modul["PEŁNANAZWASTRONY"](pelna_nazwa_jednostki);
local strona=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_jednostki);
if(strona)then pelna_nazwa_jednostki=strona;end;
local nazwy_modul=require("Module:Nazwy");
self.nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_jednostki);
self.nazwa_przestrzeni_woluminu=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_woluminu=(self.nazwa_przestrzeni_woluminu~="")and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_jednostki) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_jednostki);
self.nazwa_podstrony_woluminu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_jednostki);
self.parametry_woluminu=false;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[self.nazwa_przestrzeni];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then return;end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[self.nazwa_przestrzeni_woluminu];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then return;end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[self.nazwa_woluminu];
if(not tab_lista_artykulow_w_ksiazce)then
return;
end;
local oryginalna_ksiazka=tab_lista_artykulow_w_ksiazce.adres_woluminu_bazowego_spisu_rzeczy;
if(oryginalna_ksiazka)then
self.nazwa_przestrzeni=oryginalna_ksiazka[1];
self.nazwa_przestrzeni_woluminu=oryginalna_ksiazka[2];
self.nazwa_woluminu=oryginalna_ksiazka[3];
end;
else
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
self.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self.parametry_woluminu=true;
end;
end;
function p.TabelaListyStronWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki,czy_podana,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
local self_tab;
if((not nazwa_przestrzeni)or(not nazwa_przestrzeni_ksiazki)or(not nazwa_ksiazki)or(not nazwa_artykulu))then
if((self.parametry_woluminu)and((not tabela_listy_danych_analizy_ksiazki)or(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
if(not tabela_listy_danych_analizy_ksiazki)then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
if((not self_tab)or((self_tab)and(tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu)))then
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki;
local tab_lista_artykulow_w_ksiazce=tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki;
local tab_lista_zmiennych_w_artykule=tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
end;
end;
if((not self_tab)or(not tabela_listy_danych_analizy_ksiazki))then
self_tab,tabela_listy_danych_analizy_ksiazki=p.Self(self,tabela_listy_danych_analizy_ksiazki);
end;
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni=tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni or((not czy_podana) and self_tab.nazwa_przestrzeni_podana or self_tab.nazwa_przestrzeni)];
if(not lista_artykulow_w_ksiazkach_w_danej_przestrzeni)then
return nil,nil,nil,nil,nil;
end;
local tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki=lista_artykulow_w_ksiazkach_w_danej_przestrzeni[nazwa_przestrzeni_ksiazki or((not czy_podana) and self_tab.nazwa_przestrzeni_woluminu_podana or self_tab.nazwa_przestrzeni_woluminu)];
if(not tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,nil,nil,nil;--[[--Do poprawienia--]]
end;
local tab_lista_artykulow_w_ksiazce=tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki or((not czy_podana) and self_tab.nazwa_woluminu_podana or self_tab.nazwa_woluminu)];
if(not tab_lista_artykulow_w_ksiazce)then
return nil,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,nil,nil;
end;
local tab_lista_zmiennych_w_artykule=tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu and tab_lista_artykulow_w_ksiazce.lista_podstron_woluminu[nazwa_artykulu or ((not czy_podana) and self_tab.nazwa_podstrony_woluminu_podana or self_tab.nazwa_podstrony_woluminu)] or nil;
return tab_lista_artykulow_w_ksiazce.spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
end;
function p.AnalizujArgumentySzablonu(self,frame)
local parametry_modul=require("Module:Parametry");
self.args=parametry_modul.PobierzArgsParametry(frame,true);
end;
function p.Args(self)
return self.args;
end;
function p.Self(self,tabela_listy_danych_analizy_ksiazki)
local tabela_listy_danych_analizy_ksiazki=tabela_listy_danych_analizy_ksiazki or mw.loadData("Module:StronicowyParser/informacje").tablica_zebranych_danych_woluminowych;
local self_tab={};
self_tab.nazwa_przestrzeni=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu=tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
self_tab.nazwa_przestrzeni_podana=self.nazwa_przestrzeni;
self_tab.nazwa_przestrzeni_woluminu_podana=self.nazwa_przestrzeni_woluminu;
self_tab.nazwa_woluminu_podana=self.nazwa_woluminu;
self_tab.nazwa_podstrony_woluminu_podana=self.nazwa_podstrony_woluminu;
return self_tab,tabela_listy_danych_analizy_ksiazki;
end;
function p.KompletnaNazwaWoluminu(self,frame)
return ((self.nazwa_przestrzeni~="")and(self.nazwa_przestrzeni..":") or "")..((self.nazwa_przestrzeni_woluminu~="")and (self.nazwa_przestrzeni_woluminu.."/") or "")..self.nazwa_woluminu
end;
function p.NazwaPodStronyWoluminu(self,frame)
return self.nazwa_podstrony_woluminu..(self.parametry and ("?"..self.parametry) or "")..(self.naglowek and ("#"..self.naglowek) or "");
end;
function p.StronaArtykularnaKompletna(artykul,pelna_nazwa_ksiazki_w_bazie,przekierowanie_w_bazie,naglowek,ksiazka,analizowana)
local stronicowyparser_modul=require("Module:StronicowyParser");
local nazwy_modul=require("Module:Nazwy");
local czy_z_nazwa_ksiazki=ksiazka and (not analizowana) and pelna_nazwa_ksiazki_w_bazie;
local pelna_nazwa_ksiazki=(czy_z_nazwa_ksiazki and (pelna_nazwa_ksiazki_w_bazie[4])) and nazwy_modul["NazwaModułu"](pelna_nazwa_ksiazki_w_bazie[1],pelna_nazwa_ksiazki_w_bazie[2],pelna_nazwa_ksiazki_w_bazie[3],"") or nil;
local artykul=czy_z_nazwa_ksiazki and not pelna_nazwa_ksiazki_w_bazie[5] and p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,naglowek) or artykul;
return ksiazka and ((((pelna_nazwa_ksiazki)and(pelna_nazwa_ksiazki~=""))
and(pelna_nazwa_ksiazki)or stronicowyparser_modul["AktualnaKsiążka"](mw.getCurrentFrame())).."/"..artykul)
or artykul;
end;
function p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki)
p:AnalizujArgumentySzablonu(frame);
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
local tab_lista_artykulow_w_ksiazce_spis=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local tab_naglowkow={};
for _,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local rozdzial=tab_lista[1][1];
local poziom_rozdzialu=tab_lista[1][2][1];
local czy_centrowany=tab_lista[1][2][4];
if((poziom_rozdzialu)and(poziom_rozdzialu>0)and(not czy_centrowany))then
table.insert(tab_naglowkow,rozdzial);
end;
end;
self.tablica_napisowa_wprowadzenia_tekstu=tab_naglowkow;
return tab_naglowkow;
end;
function p.LosowyNapisProwadzeniaTekstuBezPierwszegoOrazOstatniegoNapisuSpisuRzeczy(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_pomiedzy_napisu_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_pomiedzy_napisu_wprowadzenia_tekstu=math.fmod(self.numer_pomiedzy_napisu_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu-2);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_pomiedzy_napisu_wprowadzenia_tekstu+2];
return artykul;
end;
function p.LosowyNapisProwadzeniaTekstuWoluminu(self,frame,tabela_listy_danych_analizy_ksiazki)
self.numer_losowy_napis_wprowadzenia_tekstu=tonumber(frame.args[1]) or 1;
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
if(not self.tablica_napisowa_wprowadzenia_tekstu)then return nil;end;
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
self.reszta_losowy_napis_wprowadzenia_tekstu=math.fmod(self.numer_losowy_napis_wprowadzenia_tekstu,self.len_pomiedzy_napisu_wprowadzenia_tekstu);
local artykul=self.tablica_napisowa_wprowadzenia_tekstu[self.reszta_losowy_napis_wprowadzenia_tekstu+1];
return artykul;
end;
function p.PierwszyNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[1];
end;
function p.OstatniNapisWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
return self.tablica_napisowa_wprowadzenia_tekstu[#(self.tablica_napisowa_wprowadzenia_tekstu)];
end;
function p.LiczbaNapisowaWprowadzeniaTekstu(self,frame)
self.tablica_napisowa_wprowadzenia_tekstu=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame,tabela_listy_danych_analizy_ksiazki);
self.len_pomiedzy_napisu_wprowadzenia_tekstu=self.len_pomiedzy_napisu_wprowadzenia_tekstu or #(self.tablica_napisowa_wprowadzenia_tekstu);
return self.len_pomiedzy_napisu_wprowadzenia_tekstu;
end;
function p.IteratorPoWprowadzeniachNapisowychTekstu(self,frame)
local tab_naglowkow=self.tablica_napisowa_wprowadzenia_tekstu or p.TablicaNapisowaPoWprowadzeniachTekstu(self,frame);
local parametry_modul=require("Module:Parametry");
return parametry_modul.IteratorPoNumerowanychElementachTablicy(tab_naglowkow);
end;
function p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki,tab_lista_artykulow_w_ksiazce_spis,spis_tresci,inne_spisy,dodatkowe_artykuly)
p:AnalizujArgumentySzablonu(frame);
local lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule;
if(not tab_lista_artykulow_w_ksiazce_spis)then
p:ParametryKonteneraWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
tab_lista_artykulow_w_ksiazce_spis,lista_artykulow_w_ksiazkach_w_danej_przestrzeni,tab_lista_ksiazek_w_danej_przestrzeni_nazw_ksiazki,tab_lista_artykulow_w_ksiazce,tab_lista_zmiennych_w_artykule=p:TabelaListyStronWoluminu(frame,tabela_listy_danych_analizy_ksiazki);
spis_tresci=tab_lista_artykulow_w_ksiazce.nazwa_bazowego_spisu;
inne_spisy=tab_lista_artykulow_w_ksiazce.tab_inne_spisy;
dodatkowe_artykuly=tab_lista_artykulow_w_ksiazce.dodatkowe_strony_woluminu;
end;
if(not tab_lista_artykulow_w_ksiazce_spis)then return nil;end;
local args=p:Args();
local parametry_modul=require("Module:Parametry");
local czy_naglowek=parametry_modul.CzyTak(args["nagłówek"]);
local tab_artykulow=(not czy_naglowek) and {} or nil;
local tab_listy_artykulow={};
local tab_listy_artykulow_spis={};
local czy_inne_spisy=false;
local html_modul=require("Module:Html");
local nazwa_tabeli_danego_spisu_tresci=args["spis"];
if(nazwa_tabeli_danego_spisu_tresci)then
local techniczne_modul=require("Module:Techniczne");
nazwa_tabeli_danego_spisu_tresci=html_modul.DecodeHtml(nazwa_tabeli_danego_spisu_tresci,true);
nazwa_tabeli_danego_spisu_tresci=html_modul["TransformacjaKoduHtmlDoZnakuCiągu"](nazwa_tabeli_danego_spisu_tresci);
nazwa_tabeli_danego_spisu_tresci=parametry_modul["Odstępy"]{[1]=nazwa_tabeli_danego_spisu_tresci,[2]="tak",};
nazwa_tabeli_danego_spisu_tresci=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"](nazwa_tabeli_danego_spisu_tresci,"");
local nazwa_ksiazki=p:KompletnaNazwaWoluminu(frame)
local nazwa_artykulu=nazwa_ksiazki.."/"..nazwa_tabeli_danego_spisu_tresci;
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_artykulu);
if(strona)then
local nazwy_modul=require("Module:Nazwy");
nazwa_tabeli_danego_spisu_tresci=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona);
end;
end;
local czy_dany_spis=nil;
for m,tab_lista in ipairs(tab_lista_artykulow_w_ksiazce_spis)do
local poziom_rozdzialu=tab_lista[1][2][1];
local nazwa_spisu=nil;
if(((m==1)and(not poziom_rozdzialu))or((m>0)and(poziom_rozdzialu)and(poziom_rozdzialu==1)))then
local spis=tab_lista[1]["spis"];
nazwa_spisu=spis and spis[1] or nil;
----
if(not nazwa_tabeli_danego_spisu_tresci)then
if(nazwa_spisu)then
if(not tab_listy_artykulow["spis"])then tab_listy_artykulow["spis"]={};end;
local spis_artykulow=tab_listy_artykulow["spis"];
spis_artykulow[nazwa_spisu]={};
tab_listy_artykulow_spis=spis_artykulow[nazwa_spisu];
czy_inne_spisy=true;
else
local dodatkowe=tab_lista[1]["dodatkowe"];
if(dodatkowe)then
tab_listy_artykulow["dodatkowe"]={};
tab_listy_artykulow_spis=tab_listy_artykulow["dodatkowe"];
czy_inne_spisy=true;
end;
end;
else
if(nazwa_spisu)then
if(nazwa_spisu==nazwa_tabeli_danego_spisu_tresci)then
czy_dany_spis=true;
else
if(czy_dany_spis)then
czy_dany_spis=nil;
break;
else
czy_dany_spis=nil;
end;
end;
end;
end;
end;
if((tab_lista[2])and((not nazwa_tabeli_danego_spisu_tresci)or((nazwa_tabeli_danego_spisu_tresci)and(czy_dany_spis))))then
local pomin_pozycje=true;
for _,artykul_w_bazie in ipairs(tab_lista[2])do
if((not pomin_pozycje)or(not nazwa_spisu))then
local czy_table_baza_artykulu=p.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie[1]);
local artykul=czy_table_baza_artykulu and artykul_w_bazie[1][1] or artykul_w_bazie[1];
----
artykul=p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek);
----
if(czy_naglowek or (not tab_artykulow[artykul]))then
if(not czy_naglowek)then tab_artykulow[artykul]=true;end;
local nazwa=czy_table_baza_artykulu and artykul_w_bazie[1][2] or nil;
local przekierowanie=czy_table_baza_artykulu and artykul_w_bazie[1][3] or nil;
local pelna_nazwa_ksiazki=czy_table_baza_artykulu and artykul_w_bazie[1][4] or nil;
table.insert(tab_listy_artykulow_spis,(nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
else
pomin_pozycje=false;
end;
end;
end;
end;
local stronicowyparser_modul=require("Module:StronicowyParser");
local parametry_modul=require("Module:Parametry");
--local spis_tresci,inne_spisy,dodatkowe_artykuly=nazwa_glownego_spisu,tab_inne_spisy,tab_dodatkowe_artykuly;
if((nazwa_tabeli_danego_spisu_tresci)or(((not inne_spisy)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](inne_spisy)))
and((not dodatkowe_artykuly)
or(not parametry_modul["CzySąElementyNumerowaneTablicy"](dodatkowe_artykuly)))
))then
local tablica_spisu_glownego;
if(not nazwa_tabeli_danego_spisu_tresci)then
if(czy_inne_spisy)then
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
local tab_listy_artykulow_spis=tab_listy_artykulow["spis"] or {};
tablica_spisu_glownego=tab_listy_artykulow_spis[czy_table_spis_tresci and spis_tresci[1] or spis_tresci];
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
else
tablica_spisu_glownego=tab_listy_artykulow_spis;
end;
local iter_glowny=parametry_modul.IteratorPoNumerowanychElementachTablicy(tablica_spisu_glownego);
return function()
local wartosc=iter_glowny();
if(not wartosc)then return nil;end;
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
local artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc or nil);
local nazwa=czy_table_wartosc and wartosc[2] or nil;
local przekierowanie=czy_table_wartosc and wartosc[3] or nil;
local pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
local wykorzystane_spisy={};
local iter_innych_spisow=parametry_modul.IteratorPoNumerowanychElementachTablicy(inne_spisy or {});
local czy_dodatkowe_zaanalizowane=false;
local function IteratorMain(wartosc,numer)
----
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[wartosc];
if(tabela_spisu)then
if((wykorzystane_spisy)and(wykorzystane_spisy[wartosc]))then
tabela_spisu=nil;
else
wykorzystane_spisy[wartosc]=true;
end;
end;
local iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
----
local tak=nil;
local iter2=nil;
local function Iterator()
local function IterMain()
local wartosc=iter();
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
if(not wartosc)then
if(numer~=0)then
return nil;
else
local function InneSpisy()
--if(aa<10)then return nil;end;
local spis=iter_innych_spisow();
if(not spis)then
if(czy_dodatkowe_zaanalizowane)then return nil;end;
local tabela_spisu_spis=tab_listy_artykulow["dodatkowe"];
if((not tabela_spisu_spis)or(not parametry_modul["CzySąElementyNumerowaneTablicy"](tabela_spisu_spis)))then return nil;end;
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu_spis or {});
czy_dodatkowe_zaanalizowane=true;
wartosc=iter();
return true;
end;
local czy_table_spis=parametry_modul.TypeTable(spis);
local spis_artykul=czy_table_spis and spis[1] or spis;
if(not wykorzystane_spisy[spis_artykul])then
wykorzystane_spisy[spis_artykul]=true;
local tabela_spisu_spis=tab_listy_artykulow["spis"] or {};
local tabela_spisu=tabela_spisu_spis[spis_artykul];
if(tabela_spisu)then
iter=parametry_modul.IteratorPoNumerowanychElementachTablicy(tabela_spisu or {});
wartosc=iter();
if(not wartosc)then
return InneSpisy();
end;
else
return InneSpisy();
end;
else
return InneSpisy();
end;
return true;
end;
local koniec=InneSpisy();
if(not koniec)then return nil;end;
end;
end;
----
local czy_table_wartosc=p.CzyTabelaStronyWoluminuSpisuRzeczy(wartosc);
artykul=czy_table_wartosc and wartosc[1] or ((not czy_table_wartosc) and wartosc);
nazwa=czy_table_wartosc and wartosc[2] or nil;
przekierowanie=czy_table_wartosc and wartosc[3] or nil;
pelna_nazwa_ksiazki=czy_table_wartosc and wartosc[4] or nil;
----
artykul=p.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul);
----
tak=true;
iter2=IteratorMain(artykul,numer+1);
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
if(not tak)then
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=iter2();
if(not artykul)then
tak=nil;
local artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki=IterMain();
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
else
return artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki;
end;
end;
end;
return Iterator;
end;
local czy_table_spis_tresci=parametry_modul.TypeTable(spis_tresci);
return IteratorMain(czy_table_spis_tresci and spis_tresci[1] or spis_tresci,0);
end;
function p.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,co_ma_wykrywac)
local frame=mw.getCurrentFrame();
local nazwy_modul=require("Module:Nazwy");
local techniczne_modul=require("Module:Techniczne");
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,nil,tab_lista_artykulow_w_ksiazce_spis,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly);
for nazwa_artykulu_w_bazie,nazwa,przekierowanie_w_bazie,pelna_nazwa_ksiazki in iterator do
if(pelna_nazwa_ksiazki)then
if(co_ma_wykrywac)then
if((pelna_nazwa_ksiazki[1]==nazwa_przestrzeni)and(pelna_nazwa_ksiazki[2]==nazwa_przestrzeni_ksiazki)and(pelna_nazwa_ksiazki[3]==nazwa_ksiazki))then
local czy_przekierowanie=pelna_nazwa_ksiazki[6];
if(czy_przekierowanie)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(pelna_nazwa_ksiazki[5])then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
end;
else
if((nazwa_artykulu==przekierowanie))then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,2;
end;
end;
else
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local ile,_=techniczne_modul.PoliczZbiory{[1]=nazwa_modulu,};
if(ile>0)then
return nazwa_artykulu,3;
else
return nazwa_artykulu,4;
end;
end;
end;
end;
else
if(not co_ma_wykrywac)then
local przekierowanie=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(przekierowanie_w_bazie,false);
if(przekierowanie)then
if(nazwa_artykulu==przekierowanie)then
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
return nazwa_artykulu_strony,1;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return przekierowanie,2;
end;
end;
else
local nazwa_artykulu_strony=p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(nazwa_artykulu_w_bazie,false);
if(nazwa_artykulu==nazwa_artykulu_strony)then
return nazwa_artykulu,3;
end;
end;
end;
end;
end;
end;
function p.ObliczeniaInformacje(self,frame)
local iterator=p.IteratorPoStronachWoluminuEwentualnieWedleAutonawigacji(frame,tabela_listy_danych_analizy_ksiazki);
if (not iterator)then return nil;end;
----
self.tab_artykul={};
----
for artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki in iterator do
table.insert(self.tab_artykul, (nazwa or przekierowanie or pelna_nazwa_ksiazki) and {artykul,nazwa,przekierowanie,pelna_nazwa_ksiazki,} or artykul);
end;
self.len_tab_artykul=#self.tab_artykul;
return true;
end;
function p.UsuwanieElementowePoziomoweZTablicy(tablica,numer)
if(numer==0)then return tablica,0;end;
local s=0;
for i=#tablica,1,-1 do
local artykul=tablica[i][1];
local numer_artykulu_w_bazie=p.PoziomAdresu(artykul);
if(numer~=numer_artykulu_w_bazie)then
table.remove(tablica,i);
s=s+1;
end;
end;
return tablica,s;
end;
function p.LosowaStronaBezPierwszejOrazOstatniejStronyWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul-2);
local artykul=tab_artykul[reszta_pomiedzy_artykul+2];
return artykul;
end;
function p.LosowaStronaWoluminu(self,frame,numer)
local tab_artykul;local s;
if(numer>0)then
local parametry_modul=require("Module:Parametry");
tab_artykul=parametry_modul["KopiujTabelęElementów"](self.tab_artykul);
tab_artykul,s=p.UsuwanieElementowePoziomoweZTablicy(tab_artykul,numer);
else
tab_artykul=self.tab_artykul;
s=0;
end;
local numer_pomiedzy_artykul=tonumber(frame.args[1]) or 1;
local reszta_pomiedzy_artykul=math.fmod(numer_pomiedzy_artykul,#tab_artykul);
local artykul=tab_artykul[reszta_pomiedzy_artykul+1];
return artykul;
end;
function p.RozwijanieZakodowanejNazwySzablonu(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local szablonowe_modul=require("Module:Szablonowe");
local function RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if((szablonowe_modul.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow))
or (szablonowe_modul.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow))
)then
return nil,false;
end;
local nazwa_szablonu_temp,czy_powodzenie=p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true);
if(not czy_powodzenie)then
return nil,false;
end;
nazwa_szablonu=nazwa_szablonu_temp or nazwa_szablonu;
return nazwa_szablonu,true;
end;
nazwa_szablonu=RozwinSzablon(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
return nazwa_szablonu;
end;
function p.TOCSilnik(frame,lista_elementow_spisu_tresci, atrybuty,bez_przypisow)
if(lista_elementow_spisu_tresci==nil)then return nil;end;
local twor_listy="";
local liczba_ulozenia_w_menu_spisu_tresci=lista_elementow_spisu_tresci[1][2];
local poziom=1;
local num={};
local nazwa_strony_z_naglowkami=lista_elementow_spisu_tresci.nazwa_strony or "";
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for licznik, element_w_tablicy in ipairs(lista_elementow_spisu_tresci) do
local czy_w_tym_szablony=mw.ustring.match(element_w_tablicy[1][1],"{{[^{}]+}}");
local adres=element_w_tablicy[1][1];
local naglowek=element_w_tablicy[1][2];
local czy_przypis=(bez_przypisow and stronicowyparser_obiekty_modul.napisy_wprowadzenia_tekstu_przypisowych[naglowek] or nil);
if(czy_w_tym_szablony)then
local specjalne_modul=require("Module:Specjalne");
adres=specjalne_modul["PrzetwórzNagłówek"](adres,true);
naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,false);
end;
adres=nazwa_strony_z_naglowkami.."#"..adres;
----
if(licznik==1)then
num[#num+1]=1;
twor_listy=(atrybuty and '<ul '..atrybuty..'>' or '<ul>')..'<li '..(czy_przypis and ('style="display:none;" ') or "")..'class=\"toclevel-1 tocsection-1\">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
else
if(element_w_tablicy[2]==liczba_ulozenia_w_menu_spisu_tresci)then
num[#num]=num[#num]+1;
twor_listy=twor_listy..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
elseif(element_w_tablicy[2]>liczba_ulozenia_w_menu_spisu_tresci)then
num[#num+1]=1;
poziom=poziom+1;
twor_listy=twor_listy..'<ul><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
elseif(element_w_tablicy[2]<liczba_ulozenia_w_menu_spisu_tresci)then
local num_length=#num;
for i=num_length,num_length-liczba_ulozenia_w_menu_spisu_tresci+element_w_tablicy[2]+1,-1 do
table.remove(num);
end;
num[#num]=num[#num]+1;
local roznica_poziomow=liczba_ulozenia_w_menu_spisu_tresci-element_w_tablicy[2];
poziom=poziom-roznica_poziomow;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',roznica_poziomow)..'</li><li '..(czy_przypis and ('style="display:none;" ') or "")..'class="toclevel-'..poziom..' tocsection-'..licznik..'">'
.."[["..adres.."|<span class=\"tocnumber\">"..table.concat(num,".").."</span><span class=\"toctext\">"..naglowek.."</span>]]";
liczba_ulozenia_w_menu_spisu_tresci=element_w_tablicy[2];
end;
end;
end;
twor_listy=twor_listy..mw.ustring.rep('</li></ul>',liczba_ulozenia_w_menu_spisu_tresci or 0);
return twor_listy;
end;
function p.TOC(frame,lista_elementow_spisu_tresci,czy_nie_aktualny,rozciagnij)
local frame=frame or mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame,true);
local bez_przypisow=PobierzParametr("bez przypisów");
bez_przypisow=parametry_modul.CzyTak(bez_przypisow);
local twor_listy=p.TOCSilnik(frame,lista_elementow_spisu_tresci,nil,bez_przypisow);
local toc_czy_tocramka=PobierzParametr("toc");toc_czy_tocramka=parametry_modul.CzyTak(toc_czy_tocramka);
if(not toc_czy_tocramka)then
local czy_ukryte=twor_listy;
local funkcja=PobierzParametr("funkcja") or "UkrytaWikitabelowaListaMenu";
local wysokosc=PobierzParametr("wysokość");wysokosc=parametry_modul.CzyTak(wysokosc) and wysokosc or "43.75rem";
local szerokosc=PobierzParametr("szerokość");szerokosc=parametry_modul.CzyTak(szerokosc)and szerokosc or "100%";
local spis_tresci=PobierzParametr("spis treści");spis_tresci=parametry_modul.CzyTak(spis_tresci)and spis_tresci or "Spis treści";
local bez_not_overflow_x=PobierzParametr("bez pasków poziomych przewijania");bez_not_overflow_x=parametry_modul.CzyTak(bez_not_overflow_x);
local spis_artykulu=PobierzParametr("spis artykułu");spis_artykulu=parametry_modul.CzyTak(spis_artykulu);
local czy_bez_arginesu_dolnego=PobierzParametr("bez marginesu dolnego");czy_bez_arginesu_dolnego=parametry_modul.CzyTak(czy_bez_arginesu_dolnego);
local z_marginesami_ramki=PobierzParametr("z marginesami ramki");local czy_z_marginesami_ramki=parametry_modul.CzyTak(z_marginesami_ramki);
local zawartosc_z_marginesami=PobierzParametr("zawartość z marginesami");local czy_zawartosc_z_marginesami=parametry_modul.CzyTak(zawartosc_z_marginesami);
local maxwidth=PobierzParametr("max-width");
local czy_maxwidth=((maxwidth)and(maxwidth~="none"))and tonumber(mw.ustring.match(maxwidth,"^(%d+)%a+$")) or nil;
local klasa=PobierzParametr("klasa");
twor_listy='<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..' mw-overflow-x mw-overflow-y '..((not bez_not_overflow_x) and ("mw-not-overflow-x") or "")..'" style="'..(czy_zawartosc_z_marginesami and ("padding:"..zawartosc_z_marginesami)..";" or "")..(czy_maxwidth and ('max-width:'..maxwidth..";") or '')..'width:'..szerokosc..';max-height:'..wysokosc..';overflow:auto;padding-right:3px;box-sizing:border-box;">'..(czy_ukryte or "<ul></ul>").."</div>";
local wikikod_menu='{{Tabela nawigacyjna|styl='..((czy_z_marginesami_ramki) and ("margin:"..z_marginesami_ramki)..";" or "")..((czy_bez_arginesu_dolnego) and 'margin-bottom:0;' or "")..'font-size:1em;background-color:white;line-height:1.2em;width:'..(rozciagnij and "100%" or "auto")..';box-sizing:border-box'..(spis_artykulu and ';border:#aaa 1px solid' or '')..'|tytuł=<div class="tytuł_spisu_treści" style="text-align:left;font-size:1em;background-color:white;line-height:1.2em;'..(spis_artykulu and ';border-bottom:#aaa 1px solid' or '')..';white-space:nowrap;min-width:8.125em;">'..spis_tresci..'</div>|spis='..twor_listy..'|funkcja='..funkcja..'|klasa=spis_treści'..(klasa and (" "..klasa) or '')..'}}';
local rozwiniety_wikikod=frame:preprocess(wikikod_menu);
return rozwiniety_wikikod;
else
return (twor_listy and ('\n<div style="color: #000;font-family: \'Linux Libertine\',\'Georgia\',\'Times\',serif;font-weight: normal;font-size:2.2em;border-bottom:1px solid #a2a9b1;line-height: 1.3;margin-top:1em;margin-bottom:0.25em">Spis treści</div>\n<div class="toc_ogólnie_spis '..(not czy_nie_aktualny and 'toc_spis' or 'toc_inny_spis')..'" style="margin-left:1em;font-size:1em;line-height:1.4;">'..twor_listy..'</div>') or "");
end;
end;
function p.AnalizaSzablonuStronicowegoParsera(self,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer,nazwa_modulu,tablica_danych_parametrow_szablonu_strony,__Funkcja, __Funkcja2)
if(obiekt~="SZABLON")then return;end;
--uzyskano_w_wyniku_parsowania_wywolanie_szablonu=mw.ustring.gsub(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,"\n+","");
--local tablica_obiektow_strony=self.tablica_obiektow_strony[nazwa_modulu];
----
local szablonowe_modul=require("Module:Szablonowe");
----
local function GlownaFunkcja(wywolanie,obiekt,kod)
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(wywolanie,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
__Funkcja(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,wywolanie,obiekt,kod,tab_numer);
if(__Funkcja2)then
__Funkcja2(wywolanie,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,uzyskano_w_wyniku_parsowania_wywolanie_szablonu);
end;
end);
end;
GlownaFunkcja(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod);
end;
function p.UzyskanieTylkoNazwyLubTabeliNazwyLinkuStronyWoluminuZTabeliZParametramiOrazIdentyfikatorem(artykul,czy_naglowek)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(artykul))and(artykul["LINK"]))then
if(not czy_naglowek)then
return artykul[1];
else
return artykul;
end;
end;
return artykul;
end;
function p.CzyTabelaStronyWoluminuSpisuRzeczy(tab_artykul)
local parametry_modul=require("Module:Parametry");
local czy_table_baza_artykulu=parametry_modul.TypeTable(tab_artykul);
if((czy_table_baza_artykulu)and(tab_artykul["LINK"]))then return false;end;
return czy_table_baza_artykulu;
end;
function p.TylkoNazwaStronyWoluminuZTabeliPublikacji(tab_artykulu,pomin_link)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(pomin_link or tab_artykulu["LINK"]))then return tab_artykulu[1];end;
return tab_artykulu;
end;
function p.TylkoStronaWoluminuBezParametrowOrazReferencji(tab_artykulu)
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeTable(tab_artykulu))and(tab_artykulu["LINK"]))then return nil;end;
return tab_artykulu;
end;
function p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_artykulu_strony,parametry,naglowek,tab_innej_przekierowania_strony)
local parametry_modul=require("Module:Parametry");
parametry=parametry_modul.CzyTak(parametry) and parametry or nil;
naglowek=parametry_modul.CzyTak(naglowek) and naglowek or nil;
return (parametry or naglowek or tab_innej_przekierowania_strony) and {nazwa_artykulu_strony,parametry,naglowek,["LINK"]=true,tab_innej_przekierowania_strony,} or nazwa_artykulu_strony;
end;
function p.UzyskanieNazwyStronyWoluminuZParametramiOrazIdentyfikatoremZTabeliWoluminu(tab_artykul,naglowek,pomin_link)
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tab_artykul))then
if(pomin_link or tab_artykul["LINK"])then
local nazwa_artykulu_strony=tab_artykul[1];
if(naglowek)then
local parametry=tab_artykul[2];
local naglowek=tab_artykul[3];
return nazwa_artykulu_strony..(parametry and ("?"..parametry) or "")..(naglowek and ("#"..naglowek) or "");
else
return nazwa_artykulu_strony;
end;
else
return tab_artykul;
end;
else
return tab_artykul;
end;
end;
function p.DekodowanieTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,czy_nie_odstepy)
if(not tekst)then return tekst;end;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local html_modul=require("Module:Html");
tekst=html_modul.DecodeHtml(tekst,true,nil,nil,czy_nie_odstepy);
return tekst;
end;
function p.DekodowanieNazwySzablonu(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_uwzgledniac_modyfikatory)
----
local szablonowe_modul=require("Module:Szablonowe");
local czy_kodowanie=mw.ustring.match(nazwa_szablonu,szablonowe_modul.NormaWzoruKodowaniaTekstu());
if(not czy_kodowanie)then return nil,true;end;
if(not czy_uwzgledniac_modyfikatory)then
local czy_modyfikatory=mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:");
if(czy_modyfikatory)then return nil,false;end;
end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
--local tab_naglowki=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_wprowadzenia_tekstu;
--local tab_tekst=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
---
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local tab_szablony_strona_zbiorcza=stronicowyparser_obiekty_modul.strona_zbiorcza
----
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local techniczne_modul=require("Module:Techniczne");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local czy_szablon_wszystko=false;
local nazwa_szablonu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(nazwa_szablonu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,function(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(obiekt=="SZABLON")then
local wynik,jaki_wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((tab_szablony[nazwa_szablonu])
---or(tab_naglowki[nazwa_szablonu])
--or(tab_tekst[nazwa_szablonu]
or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])
or(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])
or(tab_szablony_strona_zbiorcza[nazwa_szablonu])
or(tab_szablony_strona_start[nazwa_szablonu])
)then return nil,false;end;
for _,nazwa_modulu_lua in ipairs(stronicowyparser_obiekty_modul.tablica_nazw_ramek_lua)do
if((nazwa_szablonu==nazwy_np_modul.Module..":"..nazwa_modulu_lua)
or(mw.ustring.match(nazwa_szablonu,'^'..nazwy_np_modul.Module..":"..techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](nazwa_modulu_lua).."/"))
)then
return nil,false;
end;
end;
return true,true;
end);
czy_szablon_wszystko=czy_szablon_wszystko or ((jaki_wynik==nil)and true or jaki_wynik);
return wynik;
end;
return true;
end);
if(czy_szablon_wszystko)then
local frame=mw.getCurrentFrame();
nazwa_szablonu=frame:preprocess(nazwa_szablonu);
end;
return nazwa_szablonu,true;
end;
function p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu)
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local nazwy_szablonowe_kolidacja=stronicowyparser_obiekty_modul.nazwy_szablonowe_kolidacja;
if(nazwy_szablonowe_kolidacja[nazwa_szablonu])then return nazwa_szablonu,false;end;
local nazwa_linku=stronicowyparser_obiekty_modul.przekierowania_szablonowe_linkowe_inteligentne_inne[nazwa_szablonu];
if(nazwa_linku)then return nazwa_linku,true;end;
local litery_przestrzeni_kolidacja=stronicowyparser_obiekty_modul.litery_przestrzeni_kolidacja;
local link,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local przez_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(przez_literowa)then
local nazwa="Link"..przez_literowa..((ustep~="")and "Ustęp" or "")..dwa;
return nazwa,true;
end;
if(ustep=="")then
if(prze=="u")then return "LinkUstęp"..dwa,true;end;
if(prze=="o")then return "LinkOgólne"..dwa,true;end;
end;
else
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[prze];
if(projektowe_literowe)then
ustep=litery_przestrzeni_kolidacja[ustep] or ustep;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[ustep];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..dwa,true;
end;
end;
end;
return nazwa_szablonu,false;
else
local link,projekt,prze,ustep,dwa=mw.ustring.match(nazwa_szablonu,"^(%a)(%a)(%a)(%a?)(%d?)$");
if((link)and(link=="L"))then
if((ustep=="")or(ustep=="u"))then
local projektowe_literowe=stronicowyparser_obiekty_modul.nazwy_projektowe_serwisy_linkowe_inteligentne[projekt];
if(projektowe_literowe)then
prze=litery_przestrzeni_kolidacja[prze] or prze;
local prze_literowa=stronicowyparser_obiekty_modul.nazwy_przestrzeni_nazw_przekierowaniowe_linkowe_inteligentne[prze];
if(prze_literowa)then
return "Link"..projektowe_literowe..prze_literowa..((ustep~="") and "Ustęp" or "")..dwa,true;
end;
end;
end;
end;
return nazwa_szablonu,false;
end;
end;
function p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa,tablica_danych_parametrow_szablonu_strony,kod,czy_liczyc_przekierowanie)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku;
end;
end;
end;
nazwa=(not czy_liczyc_przekierowanie)and p.SzablonyPrzekierowanioweInteligentne(nazwa) or nazwa;
local function AnalizaSzablonowaLinku()
local nazwa,dwa=mw.ustring.match(nazwa,"^Link(%a+)(2?)$");
if(not nazwa)then return;end;
if(dwa=="")then dwa=nil;else dwa=true;end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
----
local tab_przestrzen=stronicowyparser_obiekty_modul.kody_szablony_linkowe_przestrzenne;
local tab_jezyk=stronicowyparser_obiekty_modul.kody_szablony_linkowe_dialektu;
local tab_projektowe=stronicowyparser_obiekty_modul.kody_szablony_linkowe_projektowe;
----
local nazwa_nowa,ustep_nowa=mw.ustring.match(nazwa,"^(.+)(Ustęp)$")
nazwa=nazwa_nowa or nazwa;
local czy_ustep=ustep_nowa and true or false;
local przestrzen=mw.ustring.match(nazwa,"^(%u%l+)$");
if(przestrzen)then
local przestrzenne=tab_przestrzen[przestrzen];
if(przestrzenne)then
return {przestrzenne[1],przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
----
local jezyk,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)$");
if(jezyk and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local przestrzenne=tab_przestrzen[przestrzen];
if(jezykowe and przestrzenne)then
return {przestrzenne[1],przestrzenne[2],jezykowe,czy_ustep,dwa,};
end;
----
local projektowe=tab_projektowe[jezyk];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],czy_ustep,nil,dwa,};
end;
end;
-----
local jezyk,projekt,przestrzen=mw.ustring.match(nazwa,"^(%u%l+)(%u%l+)(%u%l+)$");
if(jezyk and projekt and przestrzen)then
local jezykowe=tab_jezyk[jezyk];local projektowe=tab_projektowe[projekt];local przestrzenne=tab_przestrzen[przestrzen]
if(jezykowe and projektowe and przestrzenne)then
return {przestrzenne[1], projektowe or przestrzenne[2],jezykowe,czy_ustep,dwa,}
end;
local projektowe=tab_projektowe[jezyk..projekt];
if(projektowe and przestrzenne)then
return {przestrzenne[1],projektowe or przestrzenne[2],nil,czy_ustep,dwa,};
end;
end;
return nil;
end;
local wynik=AnalizaSzablonowaLinku();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[0])then tablica_danych_parametrow_szablonu_strony[0]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[0];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.tablica_analizy_linku=wynik;
end;
return wynik;
end;
function p.NazwaInnegoSzablonowegoLinkowegoObiektu(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
--local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
--local tab_szablony_inteligentne=stronicowyparser_obiekty_modul.kody_inne_szablony_linkowe_inteligentne;
local nazwa_zamiast_linku;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="Sekcja referencyjna")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu[2];
if(nazwa)then return nazwa;end;
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu[1];
local parametry_modul=require("Module:Parametry");
local czy_strona=parametry_modul.CzyTak(strona) and true or false;
if(not czy_strona)then
local nazwy_modul=require("Module:Nazwy");
strona=nazwy_modul["PEŁNANAZWAKSIĄŻKI"]();
end;
local ustep=tabela_parametrow_szablonu["ustęp"];
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
local czy_ustep=parametry_modul.CzyTak(ustep);
if(not czy_strona)then czy_ustep=not czy_ustep;end;
nazwa_zamiast_linku=sekcja_referencyjna_modul.Indentyfikator_lub_podstrona_wikiadresu_strony(strona,czy_ustep);
elseif(nazwa_szablonu=="Link wewnętrzny")then
nazwa_zamiast_linku=tabela_parametrow_szablonu["nazwa"] or (tabela_parametrow_szablonu["strona"] or "")..(tabela_parametrow_szablonu["nagłówek"]and("#"..tabela_parametrow_szablonu["nagłówek"]) or "")
elseif(nazwa_szablonu=="LinkOgólne")then
nazwa_zamiast_linku=tabela_parametrow_szablonu[2] or tabela_parametrow_szablonu[1];
elseif(nazwa_szablonu=="SpisTreści")then
local nazwa=(tabela_parametrow_szablonu["nazwa"]
or tabela_parametrow_szablonu[3]
or tabela_parametrow_szablonu["artykuł"]
or tabela_parametrow_szablonu[1]);
if(nazwa)then
local dodatek=tabela_parametrow_szablonu["dodatek"] or tabela_parametrow_szablonu[4];
if(dodatek)then dodatek=" "..dodatek;else dodatek="";end;
nazwa_zamiast_linku=nazwa..dodatek;
end;
elseif(nazwa_szablonu=="LinkURL")then
local nazwa=tabela_parametrow_szablonu["nazwa"] or tabela_parametrow_szablonu["n"];
if(nazwa)then
nazwa_zamiast_linku=nazwa;
else
local strona=tabela_parametrow_szablonu["strona"] or tabela_parametrow_szablonu["s"];
nazwa_zamiast_linku=strona;
end;
end;
if((nazwa_zamiast_linku)and(nazwa_zamiast_linku~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-7])then tablica_danych_parametrow_szablonu_strony[-7]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-7];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=nazwa_zamiast_linku;
end;
end;
return nazwa_zamiast_linku;
end;
function p.NazwaInnegoSzablonowegoLinkowegoSpisuRzeczy(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy;
end;
end;
end;
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
local inne_linki_szablony_elementy_spisu_rzeczy=stronicowyparser_obiekty_modul.inne_linki_szablony_elementy_spisu_rzeczy;
local tab_spis=inne_linki_szablony_elementy_spisu_rzeczy[nazwa_szablonu];
if(tab_spis)then
local czy_true=tab_spis[1];
local parametr;local numer;
if(czy_true)then
parametr=tabela_parametrow_szablonu[tab_spis.numer_link];
else
parametr=tabela_parametrow_szablonu[tab_spis.link];
local numer=tabela_parametrow_szablonu[tab_spis.numer];
parametr=(parametr and numer)and (numer.." "..parametr) or (parametr);
end;
if((parametr)and(parametr~=""))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[-8])then tablica_danych_parametrow_szablonu_strony[-8]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-8];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szereg_znakowy=parametr;
end;
end;
return parametr;
end;
return nil;
end;
function p.AnalizujLinkSzablonyOrazLinki(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
local numer;
if((obiekt)and(kod))then
if(obiekt=="SZABLON")then
numer=-2;
elseif(obiekt=="LINKW")then
numer=-3;
elseif(obiekt=="LINKZ")then
numer=-4;
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod[1],tablica_danych_parametrow_szablonu_strony_numer_kod[2],tablica_danych_parametrow_szablonu_strony_numer_kod[3],tablica_danych_parametrow_szablonu_strony_numer_kod[4],tablica_danych_parametrow_szablonu_strony_numer_kod[5];
end;
end;
end;
end;
local local1,local2,local3,local4,local5=p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych);
if((obiekt)and(kod))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[numer])then tablica_danych_parametrow_szablonu_strony[numer]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[numer];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
tablica_danych_parametrow_szablonu_strony_numer[kod]={local1,local2,local3,local4,local5,};
end;
end;
return local1,local2,local3,local4,local5;
end;
function p.AnalizujLinkSzablonyOrazLinki2(wyzyskane_wywolanie_szablonu_spis_tresci,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,obiekt,kod,tab_nazwa_spisow_przekierowaniowych)
----
local parametry_modul=require("Module:Parametry");
local wiki_modul=require("Module:Wiki");
local pozycja_artykulu=nil;local nazwa=nil;
local czy_tabela_do_parsowania_artykulu=parametry_modul.TypeTable(wyzyskane_wywolanie_szablonu_spis_tresci);
if(not czy_tabela_do_parsowania_artykulu)then
pozycja_artykulu,nazwa=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)|(.+)%]%]$");
if(not((pozycja_artykulu)and(nazwa)))then
pozycja_artykulu=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[%[([^|%[%]]+)%]%]$");
end;
end;
local html_modul=require("Module:Html");
local nazwy_modul=require("Module:Nazwy")
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_spisu_tresci_analizowana=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
local function Artykul(strona,parametry--[[_ref]],naglowek--[[_ref]])
----
--local parametry=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](strona,true);
--local naglowek=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](strona,true);
----
strona=html_modul["NazwaStronyAdresu"](strona,true);
strona=parametry_modul["Odstępy"]{[1]=strona,[2]="tak",};
local techniczne_modul=require("Module:Techniczne");
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=pelna_nazwa_spisu_tresci_analizowana,};
----
local tabela_nazw_strona={};
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw_strona);
local nazwa_przestrzeni_ksiazki_strony=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_ksiazki_strony=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw_strona) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw_strona);
local nazwa_artykulu_strony=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazw_strona);
--if((tab_nazwa_spisow_przekierowaniowych)and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])and
--[[else]]
if(tab_nazwa_spisow_przekierowaniowych)then
local techniczne_modul=require("Module:Techniczne");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(strona);
local function DaneRozwazone(strona_przekierowania,inna_ksiazka,czy_przekierowanie)
local tabela_nazw_przekierowanie={};
----
local nazwa_przestrzeni_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_przestrzeni_ksiazki_strony_przekierowania=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_ksiazki_strony_przekierowania=(nazwa_przestrzeni_ksiazki_strony~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie) or nazwy_modul["NAZWAKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie);
local nazwa_artykulu_strony_przekierowania=((not inna_ksiazka) and (nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona_przekierowania,tabela_nazw_przekierowanie)) or (nazwa_artykulu_strony));
----
local tabela_nazw_adresu_przekierowania={};
local parametry_przekierowania=((not inna_ksiazka) and (html_modul["ParametryStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
local naglowek_przekierowania=((not inna_ksiazka) and (html_modul["NagłówekStronyAdresu"](strona_przekierowania,true,tabela_nazw_adresu_przekierowania)) or nil);
----
if((nazwa_przestrzeni_strony_przekierowania==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony_przekierowania==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony_przekierowania==nazwa_ksiazki))then
local czy_inne_ksiazka=((inna_ksiazka)or(((nazwa_przestrzeni_strony~=nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki_strony~=nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki_strony~=nazwa_ksiazki))));
if(czy_inne_ksiazka)then
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony]={};
end;
if(not tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony])then
tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]=true;
end;
end;
return {nazwa_artykulu_strony_przekierowania,parametry_modul.CzyTak(parametry_przekierowania) and parametry_przekierowania or nil,parametry_modul.CzyTak(naglowek_przekierowania) and naglowek_przekierowania or nil,{czy_inne_ksiazka and {nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,inna_ksiazka,true,czy_przekierowanie,} or nil,czy_przekierowanie and nazwa_artykulu_strony or nil,czy_przekierowanie and parametry or nil,czy_przekierowanie and naglowek or nil,} or nil,};
else
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony_przekierowania,nazwa_przestrzeni_ksiazki_strony_przekierowania,nazwa_ksiazki_strony_przekierowania,true,false,czy_przekierowanie,},nazwa_artykulu_strony_przekierowania,parametry_przekierowania,naglowek_przekierowania,} or nil,};
else
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
end;
end;
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,nil,true);
else
if((tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony])
and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony])and(tab_nazwa_spisow_przekierowaniowych[nazwa_przestrzeni_strony][nazwa_przestrzeni_ksiazki_strony][nazwa_ksiazki_strony]))then
return {nazwa_artykulu_strony,parametry_modul.CzyTak(parametry) and parametry or nil,parametry_modul.CzyTak(naglowek) and naglowek or nil,{{nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,true,true,false,},nil,nil,nil,},};
end;
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,"");
local strona_przekierowania=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_ksiazki);
if(strona_przekierowania)then
return DaneRozwazone(strona_przekierowania,true,false);
end;
end;
end;
if((nazwa_przestrzeni_strony==nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki_strony==nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki_strony==nazwa_ksiazki))then
return {nazwa_artykulu_strony,parametry,naglowek,};
end
return nil,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony;
end;
---
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka_tego_projektu=pudelko_modul["Kod języka tego projektu"]();
local kod_projektu_tego_projektu=pudelko_modul["Kod projektu tego projektu"]();
local function DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,parametry_ref,naglowek_ref,nazwa,czy_link,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(not mw.ustring.match(pozycja_artykulu,"[{}%[%]|]"))then
if((czy_nie_dwukropek)and(((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))or (parametry_modul.CzyTak(klucz_projektu)and((klucz_projektu==kod_jezyka_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu)or(klucz_projektu==kod_jezyka_tego_projektu..":"..kod_projektu_tego_projektu)or(klucz_projektu==kod_projektu_tego_projektu..":"..kod_jezyka_tego_projektu))) or(((kod_jezyka)and(kod_jezyka==kod_jezyka_tego_projektu)and(kod_projektu)and(kod_projektu==kod_projektu_tego_projektu))) or ((kod_jezyka)and(not kod_projektu)and(kod_jezyka==kod_jezyka_tego_projektu))or((kod_projektu)and(not kod_jezyka)and(kod_projektu==kod_projektu_tego_projektu))))then
----
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil)
parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
----
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local tabela_nazw_adresu_artykulu={};
parametry_ref=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
naglowek_ref=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
pozycja_artykulu=html_modul["NazwaStronyAdresu"](pozycja_artykulu,true,tabela_nazw_adresu_artykulu);
----
local czy_pozycja_artykulu=pozycja_artykulu;
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(pozycja_artykulu,parametry_ref,naglowek_ref);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2],pozycja_artykulu[3],pozycja_artykulu[4]),nazwa,nil,nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local nazwy_modul=require("Module:Nazwy");
--local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"]{nazwa=czy_pozycja_artykulu,};
strona=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwa_przestrzeni_strony==nazwy_np_modul.Main)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni_strony==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni_strony==nazwy_np_modul.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
elseif(
czy_link
or parametry_modul.CzyTak(klucz_projektu)
or parametry_modul.CzyTak(kod_jezyka)
or parametry_modul.CzyTak(kod_projektu)
or ((nazwa_przestrzeni_strony~=nazwy_np_modul.Category)and(nazwa_przestrzeni_strony~=nazwy_np_modul.File))
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona,parametry_ref,naglowek_ref,nil),nazwa,nil,nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
else
local pozycja_artykulu_stara=pozycja_artykulu;
local pudelko_modul=require("Module:Pudełko");
local kod_jezyka=kod_jezyka or pudelko_modul["Kod języka tego projektu"]();
local kod_projektu=kod_projektu or pudelko_modul["Kod projektu tego projektu"]();
local wiki_modul=require("Module:Wiki");
local kod_jezyka_koncowy,kod_projektu_koncowy=wiki_modul.KodyWiki(klucz_projektu,kod_jezyka,kod_projektu);
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
local czy_link=czy_link or mw.ustring.match(pozycja_artykulu,"^:");
local nazwa_strony_linku;
local uzyskana_nazwa_strony_linku;
if(czy_nie_dwukropek)then
nazwa_strony_linku=pozycja_artykulu;
else
local kod_jezyka_poczatkowy, kod_projektu_poczatkowy;
nazwa_strony_linku,kod_jezyka_koncowy,kod_projektu_koncowy, kod_jezyka_poczatkowy, kod_projektu_poczatkowy=wiki_modul.KodyNazwyStrony(pozycja_artykulu,kod_jezyka_koncowy,kod_projektu_koncowy);
uzyskana_nazwa_strony_linku=nazwa_strony_linku;
end;
----
parametry_ref=p.DekodowanieTekstu(parametry_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
naglowek_ref=p.DekodowanieTekstu(naglowek_ref,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_strony=parametry_modul.CzyTak(parametry_ref) and parametry_ref or html_modul["ParametryStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local naglowek_strony=parametry_modul.CzyTak(naglowek_ref) and naglowek_ref or html_modul["NagłówekStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
nazwa_strony_linku=html_modul["NazwaStronyAdresu"](nazwa_strony_linku,true,tabela_nazw_adresu);
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw_artykul={};
local nazwa_przestrzeni=nazwy_modul["PRZEDMIOTOWAPRZESTRZEŃ"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
local nazwa_kanoniczna_przestrzeni;
local biezaca_wiki;
if(tabela_nazw_artykul.czy_aktualna_wiki==nil)then
biezaca_wiki=wiki_modul["CzyBieżącaWiki"]{["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,};
else
biezaca_wiki=tabela_nazw_artykul.czy_aktualna_wiki;
end;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(biezaca_wiki)then
local czy_wyswietlic_link=((uzyskana_nazwa_strony_linku)and(uzyskana_nazwa_strony_linku~=pozycja_artykulu))and true or false;
if(nazwa_przestrzeni)then
if((nazwa_przestrzeni==nazwy_np_modul.Main)
or(nazwa_przestrzeni==nazwy_np_modul.Wikijunior)
or(nazwa_przestrzeni==nazwy_np_modul.Wikibooks)
or(nazwa_przestrzeni==nazwy_np_modul.User)
)then
local pozycja_artykulu,strona,nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony=Artykul(nazwa_strony_linku);
if(pozycja_artykulu)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(pozycja_artykulu[1],pozycja_artykulu[2] or parametry_strony,pozycja_artykulu[3] or naglowek_strony,pozycja_artykulu[4]),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
nazwa_strony_linku=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_strony,nazwa_przestrzeni_ksiazki_strony,nazwa_ksiazki_strony,nazwa_artykulu_strony);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},2,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
elseif(
czy_link
or (nazwa_strony_linku~=pozycja_artykulu)
or ((nazwa_przestrzeni~=nazwy_np_modul.Category)and(nazwa_przestrzeni~=nazwy_np_modul.File))
)then
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul)
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,czy_wyswietlic_link and kod_jezyka_koncowy or nil,czy_wyswietlic_link and kod_projektu_koncowy or nil,czy_wyswietlic_link and pozycja_artykulu_stara or nil,},3,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
nazwa_strony_linku=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=nazwa_strony_linku,['kod języka']=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,},tabela_nazw_artykul);
nazwa_kanoniczna_przestrzeni=nazwy_modul.NpDane{nazwa=nazwa_przestrzeni,["kanoniczna"]="tak",["nazwij projektem"]="tak",["nazwij dyskusją projektu"]="tak",["kod języka"]=kod_jezyka_koncowy,["kod projektu"]=kod_projektu_koncowy,["istnieje"]="tak",["wynik błędu nietekstowy"]="tak",};
if(nazwa_kanoniczna_przestrzeni)then
if((nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Main)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Wikijunior)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.Project)
or(nazwa_kanoniczna_przestrzeni==nazwy_np_modul.kanoniczna.User)
)then
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},4,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony_linku,parametry_strony,naglowek_strony),nazwa,kod_jezyka_koncowy,kod_projektu_koncowy,pozycja_artykulu_stara,},5,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
end;
---
local czy_pozycja_artykulu=nil;
if((not pozycja_artykulu)and(not czy_tabela_do_parsowania_artykulu))then
local link_szablon=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^({{[^{}]+}})$");
if(link_szablon)then
local szablonowe_modul=require("Module:Szablonowe");
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(link_szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
nazwa_szablonu=p.SzablonyPrzekierowanioweInteligentne(nazwa_szablonu);
if(nazwa_szablonu=="SpisTreści")then
local tabela_nazw_spis_rzeczy={};
pozycja_artykulu=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
------
local nazwa_ksiazki=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if(not nazwa_ksiazki)then
pozycja_artykulu=p.DekodowanieTekstu(pozycja_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
local nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
------
return {pozycja_artykulu,nazwa,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
return {pozycja_artykulu,nil,},1,true,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
else
local adres=nazwa_spisu_tresci..((pozycja_artykulu~="")and ("/"..pozycja_artykulu)or "");
adres=p.DekodowanieNazwySzablonu(adres,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local datatek=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
if((nazwa)or(dodatek))then
nazwa=(nazwa or pozycja_artykulu)..((dodatek) and (" "..dodatek) or "");
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(adres);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(adres,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Sekcja referencyjna")then
local tabela_nazw_sekcja_referencyjna={};
local strona=p.SpisRzeczySzablon(nazwa_szablonu,1,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local podstrona=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
-----
strona=strona and p.DekodowanieTekstu(strona,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or strona;
podstrona=podstrona and p.DekodowanieTekstu(podstrona,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or podstrona;
-----
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(nazwa)then
local html_modul=require("Module:Html");
nazwa=html_modul.UsuwanieSpecjalnychNieschematycznychSymboli(nazwa);
nazwa=parametry_modul["Odstępy"]{[1]=nazwa,[2]="tak",[4]="tak",};
end;
----
local ustep=p.SpisRzeczySzablon(nazwa_szablonu,4,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_malej=p.SpisRzeczySzablon(nazwa_szablonu,5,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local od_duzej=p.SpisRzeczySzablon(nazwa_szablonu,6,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local nazwa_przestrzeni_nazw=p.SpisRzeczySzablon(nazwa_szablonu,7,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
local nazwa_jednostki=p.SpisRzeczySzablon(nazwa_szablonu,8,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
----
local sekcja_referencyjna_modul=require("Module:Sekcja referencyjna");
----
if((not nazwa_przestrzeni_nazw)and(not nazwa_jednostki))then
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,nil,true);
----
local html_modul=require("Module:Html");
local tabela_nazw_adresu={};
local parametry_ref=html_modul["ParametryStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
local naglowek_ref=html_modul["NagłówekStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
----
local strona_ref=html_modul["NazwaStronyAdresu"](strona_artykulu,true,tabela_nazw_adresu);
-----
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(strona_ref,parametry_ref,naglowek_ref),nazwa_artykulu,},1,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
else
local pudelko_modul=require("Module:Pudełko");
local pelna_nazwa_jednostki=pudelko_modul["Pełna nazwa jednostki"](
{
args={
["nazwa przestrzeni nazw"]=nazwa_przestrzeni_nazw,
["nazwa jednostki"]=nazwa_jednostki,
}
},0);
local strona_artykulu,nazwa_artykulu=sekcja_referencyjna_modul.Wolumin(strona,podstrona,nazwa,ustep,od_malej,od_duzej,pelnanazwajednostki);
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(strona_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(strona_artykulu,nil,nil,nazwa_artykulu,true,czy_nie_dwukropek,nil,nil,nil,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
end;
elseif(nazwa_szablonu=="Link wewnętrzny")then
local pozycja_artykulu=tabela_parametrow_szablonu["strona"];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa=tabela_parametrow_szablonu["nazwa"];
local naglowek=tabela_parametrow_szablonu["nagłówek"];
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,naglowek,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local nazwa_szablonu_nowa,dwa=mw.ustring.match(nazwa_szablonu,"^(LinkOgólne)(2?)$");
if(nazwa_szablonu_nowa)then
local pozycja_artykul;
local strona=tabela_parametrow_szablonu[1];
if(not strona)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local czy_dwa=(dwa~="")and true or false;
local nazwa=(not czy_dwa) and tabela_parametrow_szablonu[2] or nil;
local klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
local kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
local kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
local miano_przestrzeni_nazw=tabela_parametrow_szablonu["miano przestrzeni nazw"]
or tabela_parametrow_szablonu["przestrzeń"]
or tabela_parametrow_szablonu["f"];
if(miano_przestrzeni_nazw)then
pozycja_artykulu=((miano_przestrzeni_nazw~="")and(miano_przestrzeni_nazw..":") or "")..strona;
else
pozycja_artykulu=strona;
end;
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
else
local dane_szablonu_linku=p.PodzielNaElementyNazwowyWikiLinkInteligentny(nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod,true);
if(dane_szablonu_linku)then
local pozycja_artykulu=tabela_parametrow_szablonu[1];
if(not pozycja_artykulu)then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},false;
end;
local nazwa_przestrzeni=dane_szablonu_linku[1];
local pozycja_artykulu=(((nazwa_przestrzeni)and(nazwa_przestrzeni~=""))and (nazwa_przestrzeni..":") or "")..tabela_parametrow_szablonu[1];
local nazwa=((not dane_szablonu_linku[4])and(not dane_szablonu_linku[5])) and (tabela_parametrow_szablonu[2]) or nil;
local klucz_projektu;local kod_jezyka;local kod_projektu;
if((not dane_szablonu_linku[2])and(not dane_szablonu_linku[3]))then
klucz_projektu=tabela_parametrow_szablonu["klucz projektu"] or tabela_parametrow_szablonu["k"];
kod_jezyka=tabela_parametrow_szablonu['kod języka'] or tabela_parametrow_szablonu["kj"];
kod_projektu=tabela_parametrow_szablonu["kod projektu"] or tabela_parametrow_szablonu["kp"];
else
kod_jezyka=dane_szablonu_linku[3];
kod_projektu=dane_szablonu_linku[2];
end;
local czy_nie_dwukropek;
if(nazwa_przestrzeni=="")then
czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
elseif((not kod_jezyka)and(not kod_projektu)and(not klucz_projektu))then
czy_nie_dwukropek=true;
else
czy_nie_dwukropek=false;
end;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,klucz_projektu,kod_jezyka,kod_projektu,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
elseif((__FUNKCJA)and(__FUNKCJA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)))then
return nil,nil,false,{tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,},true;
end;
end;
end;
end);
else
local nazwa_strony=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s*%]$");
if(nazwa_strony)then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nil,nil,nil, nazwa_strony,"url",},6,false,nil,false;
else
local nazwa_strony,nazwa_linku=mw.ustring.match(wyzyskane_wywolanie_szablonu_spis_tresci,"^%[(%S+)%s+([^%[%]]-)%s*%]$");
if((nazwa_strony)and(nazwa_linku))then
nazwa_strony=html_modul.DecodeHtml(nazwa_strony,true);
return {p.UzyskanieTabeliStronyWoluminuParametremOrazIdentyfikatorem(nazwa_strony,nil,nil),nazwa_linku,nil,nil, nazwa_strony,"url",},6,false,nil,false;
end;
end;
end;
elseif(not czy_tabela_do_parsowania_artykulu)then
local specjalne_modul=require("Module:Specjalne");
if(specjalne_modul.CzyInterwiki(wyzyskane_wywolanie_szablonu_spis_tresci))then
return nil,nil,false,nil,true;
end;
local parametry_modul=require("Module:Parametry");
--pozycja_artykulu=mw.getContentLanguage():ucfirst(parametry_modul["Odstępy"]{[1]=pozycja_artykulu,[2]="tak",});
local czy_pozycja_artykulu=mw.ustring.match(pozycja_artykulu,"^/(.-)/+$") or mw.ustring.match(pozycja_artykulu,"^/(.+)$");
if(czy_pozycja_artykulu)then
if(parametry_modul["CzyTakCiąg"](czy_pozycja_artykulu))then
czy_pozycja_artykulu=pelna_nazwa_spisu_tresci_analizowana.."/"..czy_pozycja_artykulu;
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(czy_pozycja_artykulu,nil,nil,nazwa,true,true,nil,nil,nil,nil);
else
pozycja_artykulu=nil;
return {pozycja_artykulu,nazwa},1,false,nil,false;
end;
else
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,false,czy_nie_dwukropek,nil,nil,nil,nil);
end;
else
local pozycja_artykulu=wyzyskane_wywolanie_szablonu_spis_tresci[1];
local nazwa=wyzyskane_wywolanie_szablonu_spis_tresci[2];
local czy_nie_dwukropek=wiki_modul.CzyNieMaDwukropkaWNazwieStrony(pozycja_artykulu);
return DaneKsiazkowychProjektowychMiedzyProjektowychArtykulu(pozycja_artykulu,nil,nil,nazwa,true,czy_nie_dwukropek,nil,nil,nil,nil);
end;
end;
return p;
na1lrhrjkqd1ixmt2x44jsgxrfa8vnx
Szablon:StronaStart/stronastart.css
10
58549
546516
542732
2026-06-12T10:51:13Z
Persino
2851
546516
sanitized-css
text/css
body.skin--responsive .strona_start{
font-size:1rem;
line-height:1.4;
}
body:not(.skin--responsive) .strona_start{
font-size:16px;
line-height:1.4;
}
.strona_prawa .spis{
display:flex;
flex-direction:column;
width:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
width:auto;
display:flex !important;
flex-direction:column;
box-sizing:border-box;
}
.strona_prawa .spis .style_strony_bocznego_menu,
.strona_prawa .spis .style_strony_TOC{
overflow:auto;
}
@media all and (max-width:745px){
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
width:100% !important;
}
}
.strona_prawa .mw-sticky-y.spis:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
/**/
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_prawa .mw-sticky-y.spis:hover{
max-width:43.75rem !important;
transform: scale(1,1) translate(0,0);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_prawa .pierwsza_strona .wikitable{
margin-top:0.3125rem;
margin-bottom:0.3125rem;
}
.strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{
height: 1px;
background-color: var(--border-color-base,#a2a9b1);
border: 0;
margin: 0.2em 0;
}
.strona_start.tło_strona_start,
.strona_start .tło_strona_nadrzędna,
.strona_start .tło_główna_strona,
.strona_start .tło_strona_środkowa,
.strona_start .tło_strona,
.strona_start .tło_ciało_kontener,
.strona_start .tło_ciało_strona{
background-color:white;
background-image: none;
}
.strona_prawa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-left:0.3125rem !important;
margin-right:0 !important;
}
.strona_lewa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-right:0.3125rem !important;
margin-left:0 !important;
}
.strona_prawa .mw-optimal-x:hover,
.strona_lewa .mw-optimal-x:hover{
transform: scale(1,1) translate(0,0);
max-width:none !important;
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_lewa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
html.client-nojs .strona_prawa,
html.client-nojs .strona_lewa{
overflow-x:auto !important;
overflow-y:hidden !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis{
visibility:visible !important;
position:relative !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
width: 100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC,
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{
overflow:auto;
padding-bottom:0.3125rem;
}
.strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści,
.strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{
flex:0 0 auto;
}
html.client-nojs .strona_prawa .nawigacja_boksy,
html.client-nojs .strona_lewa .nawigacja_boksy{
margin-top:0.3125rem !important;
visibility:visible !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x,
html.client-nojs .strona_lewa .mw-optimal-x{
overflow:auto !important;
visibility:visible !important;
position:relative !important;
z-index:1 !important;
direction: rtl;
width: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
width: auto !important;
max-width: calc( 100% - 0.3125rem ) !important;
height: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
z-index:3 !important;
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
}
body.skin-minerva .strona_start{
margin-top:0.25rem !important;
}
.strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover),
.strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){
overflow:auto;
}
.strona_prawa .mw-optimal-x,
.strona_lewa .mw-optimal-x{
display:flex;
flex-direction:column;
}
.strona_lewa .mw-optimal-x > div,
.strona_prawa .mw-optimal-x > div{
flex:0 0 auto;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{
background-color:blue !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{
background-color:grey !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){
background-color:white !important;
color:black !important;
}
/**/
.strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child,
.strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona,
.strona > div:not(:only-child) > .ciało_kontener > .ciało_strona,
.strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){
margin-top:0.625rem;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){
margin-top:initial;
}
.strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{
margin-bottom:0.625rem;
}
.strona > *:not(:first-child),
.strona > div > *:not(:first-child){
margin-left:0.5rem;
margin-right:0.5rem;
}
.strona > *:nth-child(2),
.strona > div > *:nth-child(2){
margin-top:0.25rem;
margin-bottom:0.125rem;
}
.strona > *:not(:nth-child(2)):not(:first-child),
.strona > div > *:not(:nth-child(2)):not(:first-child){
margin-top:0.125rem;
margin-bottom:0.125rem;
}
.strona > *:last-child:not(:first-child),
.strona > div > *:last-child:not(:first-child){
margin-top:0.125rem;
margin-bottom:0.5rem;
}
/**/
.strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{
text-align:left;
}
.strona > div > .ciało_kontener > .ciało_strona > p:first-child{
margin-top:0;
}
.strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{
margin-bottom:0;
}
.strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{
margin-top:0.5rem !important;
}
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{
margin-top:0;
}
@media print{
.noprint{
display:none;
}
.print{
display:block;
}
}
.gallerytext, .plainlinks{
text-align:left;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{
margin-top:-0.2rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{
font-size: inherit;
line-height: 1.25em;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-x{
padding-bottom:0.3125rem;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol{
list-style-position:inside;
margin-left:0;
margin-inline-start:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{
display:flex;
flex-direction:column;
max-width:100%;
overflow-x:auto;
overflow-y:hidden;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{
display:block;
width:auto !important;
min-width:100%;
text-align:left;
word-wrap:break-word;
word-break:break-all;
hyphens:none;
box-sizing:border-box;
white-space:pre-wrap;
flex-shrink:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-orgomne > a,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{
word-break: break-all;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona a code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona a code{
color:unset;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code{
display:inline;
font-size:inherit;
line-height:1.56;
word-wrap:break-word;
word-break:break-word;
}
@media all{
:not(style):not(link) ~ .strona_start{
margin-top:0.3125rem !important;
}
.strona_start p{
margin: 0.4em 0 0.5em 0;
}
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
}
.strona_start.niekolumnowy > div.mójNagłówek > div:last-child,
.strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne div > .ciało_kontener > *{
min-width:100% !important;
max-width:100% !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne .strona{
overflow:hidden !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2),
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
max-width:none !important;
width:100% !important;
margin-left:0 !important;
margin-right:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{
flex-wrap: wrap;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{
position:static !important;
margin-left:0 !important;
margin-right:0 !important;
margin-top:0 !important;
margin-bottom:0 !important;
transition:none !important;
transform:none !important;
visibility:visible !important;
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
box-sizing:border-box !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{
transition:none !important;
transform:none !important;
position:static !important;
margin-left:0 !important;
float:none !important;
clear:none !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{
width:100% !important;
box-sizing:border-box;
margin: 0 !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{
order:1 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{
order:2 !important;
display:flex;
flex-direction:column;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{
color: #3366cc !important;
font-weight: normal !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{
order:3 !important;
width:100%;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{
order:1;
height:auto !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{
order:2;
height:100% !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{
width:100% !important;
box-sizing:border-box !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{
max-height:100% !important;
overflow:visible !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{
overflow:visible !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{
display:none !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{
margin-top:0 !important;
margin-bottom:0 !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{
display:block;
text-align:left;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{
display:inline;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
display:inline-flex;
margin-left:1em;
font-size:small;
margin-right:0;
vertical-align:middle;
}
body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
margin-left:0.3em;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{
margin-top: 0;
margin-bottom: auto;
}
}
@media all{
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{
margin-top:0 !important;
}
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{
margin-top:0 !important;
margin-bottom:0.25rem !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
figure[typeof~="mw:File"].mw-halign-left{
float:left !important;
margin:4px 4px 4px 0 !important;
}
figure[typeof~="mw:File"].mw-halign-right{
float:right !important;
margin:4px 0 4px 4px !important;
}
figure[typeof~="mw:File"].mw-halign-center{
margin:0 auto !important;
}
figure[typeof~="mw:File"]{
display:block;
max-width:100%;
overflow:auto;
}
span[typeof~="mw:File"].mw-default-size{
display:inline-block;
overflow:auto;
max-width:100%;
}
div.tright{
float:right;
margin:0 0 1em 1em;
}
div.tleft{
float:left;
margin:0 1em 1em 0;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px){
div.tright, div.tleft{
margin: 0 auto !important;
float:none !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.niekolumnowy.mobilne > .strona{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
overflow:auto !important;
}
.strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{
min-width:auto !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
}
/*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/
428sjpoe6los8gibo5pgvjt0o7tqt6r
546517
546516
2026-06-12T10:55:36Z
Persino
2851
546517
sanitized-css
text/css
body.skin--responsive .strona_start{
font-size:1rem;
line-height:1.4;
}
body:not(.skin--responsive) .strona_start{
font-size:16px;
line-height:1.4;
}
.strona_prawa .spis{
display:flex;
flex-direction:column;
width:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
}
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
height:auto;
max-height:100%;
width:auto;
display:flex !important;
flex-direction:column;
box-sizing:border-box;
}
.strona_prawa .spis .style_strony_bocznego_menu,
.strona_prawa .spis .style_strony_TOC{
overflow:auto;
}
@media all and (max-width:745px){
.strona_prawa .spis > div,
.strona_prawa .spis > div > div{
width:100% !important;
}
}
.strona_prawa .mw-sticky-y.spis:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
/**/
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_prawa .mw-sticky-y.spis:hover{
max-width:43.75rem !important;
transform: scale(1,1) translate(0,0);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .pierwsza_strona.mw-overflow-y.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_prawa .pierwsza_strona .wikitable{
margin-top:0.3125rem;
margin-bottom:0.3125rem;
}
.strona_prawa .pierwsza_strona hr.pierwsza_strona_spis_treści-hr{
height: 1px;
background-color: var(--border-color-base,#a2a9b1);
border: 0;
margin: 0.2em 0;
}
.strona_start.tło_strona_start,
.strona_start .tło_strona_nadrzędna,
.strona_start .tło_główna_strona,
.strona_start .tło_strona_środkowa,
.strona_start .tło_strona,
.strona_start .tło_ciało_kontener,
.strona_start .tło_ciało_strona{
background-color:white;
background-image: none;
}
.strona_prawa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-left:0.3125rem !important;
margin-right:0 !important;
}
.strona_lewa .nawigacja_boksy > .mw-optimal-x > div{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
margin-right:0.3125rem !important;
margin-left:0 !important;
}
.strona_prawa .mw-optimal-x:hover,
.strona_lewa .mw-optimal-x:hover{
transform: scale(1,1) translate(0,0);
max-width:none !important;
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay: 0s;
}
.strona_prawa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
.strona_lewa .mw-optimal-x:not(:hover){
transform: scale(0.3,0.3) translate(-116.5%,-116.5%);
transition: transform 500ms ease-out, linear;
transition-property: transform;
transition-duration: 500ms;
transition-timing-function: ease-out, linear;
transition-delay:4s;
}
html.client-nojs .strona_prawa,
html.client-nojs .strona_lewa{
overflow-x:auto !important;
overflow-y:hidden !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis{
visibility:visible !important;
position:relative !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
width: 100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
height:auto !important;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y.spis:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_TOC,
html.client-nojs .strona_prawa .mw-sticky-y > .style_strony_bocznego_menu{
overflow:auto;
padding-bottom:0.3125rem;
}
.strona_prawa .mw-sticky-y > .style_strony_TOC > .strona_spisu_treści,
.strona_prawa .mw-sticky-y > .style_strony_bocznego_menu > div{
flex:0 0 auto;
}
html.client-nojs .strona_prawa .nawigacja_boksy,
html.client-nojs .strona_lewa .nawigacja_boksy{
margin-top:0.3125rem !important;
visibility:visible !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
transform:none;
transition:none;
}
html.client-nojs .strona_prawa .mw-optimal-x,
html.client-nojs .strona_lewa .mw-optimal-x{
overflow:auto !important;
visibility:visible !important;
position:relative !important;
z-index:1 !important;
direction: rtl;
width: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:not(:hover),
html.client-nojs .strona_lewa .mw-optimal-x:not(:hover){
width: auto !important;
max-width: calc( 100% - 0.3125rem ) !important;
height: auto !important;
}
html.client-nojs .strona_prawa .mw-optimal-x:hover,
html.client-nojs .strona_lewa .mw-optimal-x:hover{
z-index:3 !important;
width:100% !important;
max-width:calc( 100% - 0.3125rem ) !important;
}
body.skin-minerva .strona_start{
margin-top:0.25rem !important;
}
.strona_prawa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover),
.strona_lewa .mw-optimal-x.mw-optimal-js.mw-scrollbar-overflow-x:not(:hover){
overflow:auto;
}
.strona_prawa .mw-optimal-x,
.strona_lewa .mw-optimal-x{
display:flex;
flex-direction:column;
}
.strona_lewa .mw-optimal-x > div,
.strona_prawa .mw-optimal-x > div{
flex:0 0 auto;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:hover{
background-color:blue !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:active{
background-color:grey !important;
color:white !important;
}
.strona_start .strona .ciało_zawartości > .menu > .menu_boks:not(:hover):not(:active){
background-color:white !important;
color:black !important;
}
/**/
.strona > div > .ciało_kontener > .ciało_strona > :last-child.noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div:not(:only-child) > .ciało_kontener > *:nth-child(2) > .noprint > p:last-child,
.strona > div > .ciało_kontener:not(:only-child) > *:nth-child(2) > .noprint > p:last-child{
margin-bottom:0 !important;
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > :nth-child(2):not(:empty) + .ciało_strona,
.strona > div:not(:only-child) > .ciało_kontener > .ciało_strona,
.strona > div > .ciało_kontener:not(:only-child) > .ciało_strona{
padding-bottom:0 !important;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link){
margin-top:0.625rem;
}
.strona > div > .ciało_kontener > *:nth-child(1) > :not(style):not(link) + :not(style):not(link){
margin-top:initial;
}
.strona > div > .ciało_kontener > *:nth-child(2) > :not(.nawigacja):not(.nawigacja-dół):last-child{
margin-bottom:0.625rem;
}
.strona > *:not(:first-child),
.strona > div > *:not(:first-child){
margin-left:0.5rem;
margin-right:0.5rem;
}
.strona > *:nth-child(2),
.strona > div > *:nth-child(2){
margin-top:0.25rem;
margin-bottom:0.125rem;
}
.strona > *:not(:nth-child(2)):not(:first-child),
.strona > div > *:not(:nth-child(2)):not(:first-child){
margin-top:0.125rem;
margin-bottom:0.125rem;
}
.strona > *:last-child:not(:first-child),
.strona > div > *:last-child:not(:first-child){
margin-top:0.125rem;
margin-bottom:0.5rem;
}
/**/
.strona h1, .strona h2,.strona h3,.strona h4,.strona h5,.strona h6{
text-align:left;
}
.strona > div > .ciało_kontener > .ciało_strona > p:first-child{
margin-top:0;
}
.strona > div > .ciało_kontener > .ciało_strona > p:not(.br-clear):last-child{
margin-bottom:0;
}
.strona > div > .ciało_kontener > .ciało_strona > div.nawigacja.nawigacja-dół{
margin-top:0.5rem !important;
}
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).floatright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tleft + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).tright + p,
.strona > div > .ciało_kontener > .ciało_strona > :not(style):not(link):not(p).float-left-or-right + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-left + p,
.strona > div > .ciało_kontener > .ciało_strona > figure.mw-halign-right + p{
margin-top:0;
}
@media print{
.noprint{
display:none;
}
.print{
display:block;
}
}
.gallerytext, .plainlinks{
text-align:left;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p + ol{
margin-top:-0.2rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona p,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona p{
font-size: inherit;
line-height: 1.25em;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-x{
padding-bottom:0.3125rem;
}
.strona > div > .ciało_kontener.mw-scrollbar-overflow-y{
padding-right:0.3125rem;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ul,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .szablon_plik + ol{
list-style-position:inside;
margin-left:0;
margin-inline-start:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight{
display:flex;
flex-direction:column;
max-width:100%;
overflow-x:auto;
overflow-y:hidden;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona div.mw-highlight > pre{
display:block;
width:auto !important;
min-width:100%;
text-align:left;
word-wrap:break-word;
word-break:break-all;
hyphens:none;
box-sizing:border-box;
white-space:pre-wrap;
flex-shrink:0;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona span.link.link-ogromne > a{
word-break: break-all;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona a code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona a code{
color:unset;
}
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona code,
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona code{
display:inline;
font-size:inherit;
line-height:1.56;
word-wrap:break-word;
word-break:break-word;
}
@media all{
:not(style):not(link) ~ .strona_start{
margin-top:0.3125rem !important;
}
.strona_start p{
margin: 0.4em 0 0.5em 0;
}
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-top:0 !important;
margin-bottom:0.3125rem !important;
}
.strona_start.niekolumnowy > div.mójNagłówek > div:last-child,
.strona_start.kolumnowy > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne div > .ciało_kontener > *{
min-width:100% !important;
max-width:100% !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne .strona{
overflow:hidden !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek > div:last-child{
margin-bottom:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div.mójNagłówek{
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2),
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table{
max-width:none !important;
width:100% !important;
margin-left:0 !important;
margin-right:0 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tr > td:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > th:last-child,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > div:nth-child(2) > table > tbody > tr > td:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona{
flex-wrap: wrap;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div{
position:static !important;
margin-left:0 !important;
margin-right:0 !important;
margin-top:0 !important;
margin-bottom:0 !important;
transition:none !important;
transform:none !important;
visibility:visible !important;
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
box-sizing:border-box !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x{
transition:none !important;
transform:none !important;
position:static !important;
margin-left:0 !important;
float:none !important;
clear:none !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div{
width:100% !important;
box-sizing:border-box;
margin: 0 !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy > .mw-optimal-x > div > div:last-child{
font-size:0.80rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_lewa{
order:1 !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa{
order:2 !important;
display:flex;
flex-direction:column;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .kontener_spis_treści a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis a.zaznaczone,
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .strona_spisu_treści > .toc_wykaz a.zaznaczone{
color: #3366cc !important;
font-weight: normal !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa{
order:3 !important;
width:100%;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > div.nawigacja_boksy{
order:1;
height:auto !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y{
order:2;
height:100% !important;
max-height:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div{
width:100% !important;
box-sizing:border-box !important;
margin-bottom:0.25rem !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > div > .pierwsza_strona > div tr:last-child > td > div.toc_ogólnie_spis{
max-height:100% !important;
overflow:visible !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y .toc_spis{
overflow:visible !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona{
min-width:auto !important;
max-width:100vw !important;
width:100% !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_środkowa > .menu{
display:none !important;
}
.strona_start.kolumnowy.mobilne > .strona_nadrzędna > .główna_strona > .strona_prawa > .mw-sticky-y > .style_strony_TOC:only-child > .kontener_spis_treści{
margin-top:0 !important;
margin-bottom:0 !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading{
display:block;
text-align:left;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > *{
display:inline;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
display:inline-flex;
margin-left:1em;
font-size:small;
margin-right:0;
vertical-align:middle;
}
body.skin--responsive.skin-minerva .strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection,
body.skin--responsive.skin-minerva .strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .mw-editsection{
margin-left:0.3em;
}
.strona_start.kolumnowy > .strona_nadrzędna > .główna_strona > .strona_środkowa > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja,
.strona_start.niekolumnowy > .strona > div > .ciało_kontener > .ciało_strona .mw-heading > .numeracja{
margin-top: 0;
margin-bottom: auto;
}
}
@media all{
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > .rozdział,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > .rozdział{
margin-top:0 !important;
}
.strona_start.niekolumnowy > .mójNagłówek,
.strona_start.niekolumnowy > div:first-child:not(.mójNagłówek) > *,
.strona_start.kolumnowy > .strona_nadrzędna > .mójNagłówek,
.strona_start.kolumnowy > .strona_nadrzędna > div:first-child:not(.mójNagłówek) > *{
margin-top:0 !important;
margin-bottom:0.25rem !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
figure[typeof~="mw:File"].mw-halign-left{
float:left !important;
margin:4px 4px 4px 0 !important;
}
figure[typeof~="mw:File"].mw-halign-right{
float:right !important;
margin:4px 0 4px 4px !important;
}
figure[typeof~="mw:File"].mw-halign-center{
margin:0 auto !important;
}
figure[typeof~="mw:File"]{
display:block;
max-width:100%;
overflow:auto;
}
span[typeof~="mw:File"].mw-default-size{
display:inline-block;
overflow:auto;
max-width:100%;
}
div.tright{
float:right;
margin:0 0 1em 1em;
}
div.tleft{
float:left;
margin:0 1em 1em 0;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px){
div.tright, div.tleft{
margin: 0 auto !important;
float:none !important;
}
}
@media all and (max-width:745px), all and (max-device-width: 745px), all and (max-device-height: 745px){
.strona_start.niekolumnowy.mobilne > .strona{
max-width:100vw !important;
min-width:auto !important;
width:100% !important;
overflow:auto !important;
}
.strona_start.niekolumnowy.mobilne > .strona .ciało_kontener > *{
min-width:auto !important;
max-width:100% !important;
width:100% !important;
box-sizing:border-box;
}
}
/*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/
1o4yx4v5u7r5fntfskzw9byhyunao1z
Moduł:Szablonowe
828
58954
546422
546421
2026-06-11T12:08:01Z
Persino
2851
546422
Scribunto
text/plain
local p={};
--zamykanie
local znak_127=mw.loadData("Module:Html/dane").znak_127;
function p.NormaWzoruKodowaniaTekstu(co,numer_szablonu)
local wzor=znak_127.."'\"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`\"'"..znak_127;
return wzor;
end;
function p.NormaKoduKodowaniaTekstu(kod,numer)
local wikikodnumer=znak_127.."'\"`UNIQ--"..kod.."-"..numer.."-QINU`\"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruKodowaniaEncodeWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."�*39;"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"�*39;"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoEncodeWikiTekstu(kod,numer)
local wzor=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaWzoruZakodowanegoWikiTekstu(co,numer_szablonu)
local wzor=znak_127.."'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'"..znak_127;
return wzor;
end;
function p.NormaKoduZakodowanegoWikiTekstu(kod,numer)
local wikikodnumer=znak_127.."'"`UNIQ--"..kod.."-"..numer.."-QINU`"'"..znak_127;
return wikikodnumer;
end;
function p.NormaWzoruZakodowanegoHtmlTekstu(co,numer_szablonu)
local wzor="%%7F'"`UNIQ%-%-"..(co or "([%a%d]+)").."%-"..(numer_szablonu or "(%d+)").."%-QINU`"'%%7F";
return wzor;
end;
function p.NormaKoduZakodowanegoHtmlTekstu(kod,numer)
local wikikodnumer="%7F'"`UNIQ--"..kod.."-"..numer.."-QINU`"'%7F";
return wikikodnumer;
end;
function p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY)
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
return szablonowe_potrzebne_modul.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_poczatek,__FUNKCJA_koniec,__FUNCTION_niedokonczone,__FUNCTION_INCLUDE,__FUNKCJA_PARAMETRY);
end;
function p.KodujWzoryMatematyczneTekstu(self,tekst_artykulu)
local licznik=0;
local tablica_analizy_obiektow_strony_dany_modul={};
tablica_analizy_obiektow_strony_dany_modul["MATH"]={};
tekst_artykulu=mw.ustring.gsub(tekst_artykulu,"(<[Mm][Aa][Tt][Hh]>(.-)</[Mm][Aa][Tt][Hh]>)",function(szablon)
licznik=licznik+1;
tablica_analizy_obiektow_strony_dany_modul["MATH"][licznik]=szablon;
return p.NormaKoduKodowaniaTekstu("MATH",licznik);
end)
return tekst_artykulu,tablica_analizy_obiektow_strony_dany_modul;
end;
function p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt)
local parametry_modul=require("Module:Parametry");
local __max=0;
for numer,_ in pairs(tablica_analizy_obiektow_strony_dany_modul[obiekt])do
if(parametry_modul.TypeNumber(numer))then
__max=math.max(__max,numer);
end;
end;
return __max+1;
end;
function p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local numer_szablonu={};
local szablonowe_dane_modul=require("Module:Szablonowe/dane");
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_podstawowe_elementy_szablonowe_mediawiki)do
numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
for obiekt,_ in pairs(szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki)do
numer_szablonu[obiekt]=p.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
end;
return numer_szablonu;
end;
function p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu()
local stronicowyparser_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji=stronicowyparser_dane_modul.tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
return tablica_parametrowa_kodowa_szablonowa_stosowanych_funkcji;
end;
function p.UsuwanieStarychZebranychInformacjiBazyTablicyKodowaniaWikikodu(tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_usun)
local tab_analiza=p.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
for obiekt,tab_obiekt in pairs(tablica_analizy_obiektow_strony_dany_modul)do
for kod,wartosc in pairs(tab_obiekt)do
local tablica=getmetatable(tablica_analizy_obiektow_strony_dany_modul[obiekt]).tablica();
local tab_wartosc=tablica[kod];
if(tab_wartosc)then
if((not tab_usun[obiekt])or(not tab_usun[obiekt][kod]))then
if(tab_wartosc[2])then
for obiekt_tab,tab_kod in pairs(tab_analiza)do
if(obiekt_tab==obiekt)then
for _,liczba in ipairs(tab_kod)do
local tab_liczba=tablica_danych_parametrow_szablonu_strony[liczba];
if(tab_liczba)then
tab_liczba[kod]=nil;
tab_wartosc[2]=false;
end;
end;
end;
end;
end;
else
tablica[kod]=nil;
end;
end;
end;
end;
end;
function p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4)
if(not tablica_analizy_obiektow_strony_dany_modul)then tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu];end;
local czy_jedno=false;
----
local parametry_modul=require("Module:Parametry");
----
local function IteratorMain(tekst_rozwiniety_calego_artykulu,poziom_iteracji,obiekt,kod,czy_stare)
local iter=true;local iter_fun;
if((tekst_rozwiniety_calego_artykulu=="")or(czy_stare))then
iter_fun=function()
local iter=function()
return nil;
end;
return iter;
end;
else
iter_fun=function()
if((not obiekt)and(not kod))then
local iter=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu());
return iter;
else
local wynik=__FUNKCJA4 and __FUNKCJA4(tekst_rozwiniety_calego_artykulu,obiekt,kod,poziom_iteracji) or nil;
local szablon=wynik or (((obiekt)and(kod)) and (tablica_analizy_obiektow_strony_dany_modul[obiekt]))and tablica_analizy_obiektow_strony_dany_modul[obiekt][kod] or tekst_rozwiniety_calego_artykulu;
if((not szablon)or(szablon==""))then
local iter=function()
return nil;
end;
return iter;
else
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
return iter;
end;
end;
end;
end;
local tak=nil;
local iter2=nil;
poziom_iteracji=poziom_iteracji or 0;
local function Iterator()
local function IterMain()
local obiekt,kod;
----
repeat
if((parametry_modul.TypeBoolean(iter))and(iter==true))then iter=iter_fun();end;
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
local szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
szablon=(not __FUNKCJA3) and szablon or (__FUNKCJA3(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul) or szablon);
if(__FUNKCJA2)then
repeat
local czy_dalej=nil;
local jest_naglowek=__FUNKCJA2(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
if(not jest_naglowek)then
--if(poziom_iteracji>0)then
-- return nil;
--else
repeat
obiekt,kod=iter();
if((not obiekt)or(not kod))then return nil;end;
kod=tonumber(kod);
local tak_repeat=false;
if((not tablica_analizy_obiektow_strony_dany_modul[obiekt])or(not tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]))then
tak_repeat=true;
end;
until (not tak_repeat);
----
szablon=tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];
czy_dalej=true;
--end;
end;
until (not czy_dalej);
end;
----
tak=true;
if(__FUNKCJA)then
local wynik,tekst=__FUNKCJA(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu);
if(not wynik)then
czy_jedno=true;
return nil;
else
szablon=wynik;
if(tekst)then
tekst_rozwiniety_calego_artykulu=tekst;
end;
end;
end;
iter2=IteratorMain(szablon,poziom_iteracji+1,obiekt,kod,(obiekt=="STARE"));
return szablon,obiekt,kod,poziom_iteracji;
end;
if(not tak)then
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
local szablon,obiekt,kod,poziom_iteracji=iter2();
if(czy_jedno)then return nil;end;
if((not szablon)or(not kod)or(not obiekt))then
tak=nil;
local szablon,obiekt,kod,poziom_iteracji=IterMain();
if(czy_jedno)then return nil;end;
return szablon,obiekt,kod,poziom_iteracji;
else
return szablon,obiekt,kod,poziom_iteracji;
end;
end;
end;
return Iterator;
end;
return IteratorMain(tekst_rozwiniety_calego_artykulu,0,nil,nil,false),tablica_analizy_obiektow_strony_dany_modul;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6,__funkcja7,__funkcja8,__funkcja9,__funkcja10)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local tab_usun={};
local szablon2=nil;
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja3,__funkcja4,__funkcja5,function(tekst_szablon,obiekt,kod,poziom_iteracji)
local __SZABLON=function(obiekt,kod)return tablica_analizy_obiektow_strony_dany_modul[obiekt][kod];end;
local tak=((not szablon2)or(not tab_usun)or(not tab_usun[obiekt])or(not tab_usun[obiekt][kod]));
local szablon=__funkcja6 and __funkcja6(tekst_szablon,obiekt,kod,poziom_iteracji,tak,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
or (tak and __SZABLON(obiekt,kod) or szablon2);
return szablon;
end);
local poziom_iteracji_poprz=-1;
local tab_dane=nil;
for szablon,obiekt,kod,poziom_iteracji in iterator do
if((tab_dane)and(poziom_iteracji==0))then tab_dane=nil;end;
szablon2=nil;local wynik;
if(__funkcja1)then
local analiza;
szablon2,wynik,analiza=__funkcja1(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if((analiza)and(__funkcja7))then
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
----
local funkcja_temp;local tak_specjalne=false;
if(tab_dane)then
----
local tak=true;
local szablon_temp;local obiekt_temp;local kod_temp;local poziom_iteracji_temp;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
szablon_temp=tab_pos[1];obiekt_temp=tab_pos[2];kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and(tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp]));
if(not tak)then
local Typ=function()
return __funkcja7(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
if(not funkcja_temp)then funkcja_temp=Typ;end;
local czy_funkcja_jako_funkcja8=parametry_modul.TypeFunction(__funkcja8);
if(czy_funkcja_jako_funkcja8
and __funkcja8(szablon_temp,obiekt_temp,kod_temp,poziom_iteracji_temp,szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
)then
tak_specjalne=true;
end;
break;
end;
end;
end;
end;
if(tak_specjalne)then wynik=true;end;
if(funkcja_temp)then funkcja_temp();end;
else
local czy_szablon_funkcyjny=parametry_modul.TypeFunction(szablon2);
if(czy_szablon_funkcyjny)then szablon2=szablon2();end;
end;
end;
if(not wynik)then
szablon=techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](szablon2 or szablon);
if((not tab_dane)or(#tab_dane==0))then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local tak=true;local tab_wolne;
for i=#tab_dane,1,-1 do
local tab_pos=tab_dane[i];
local poziom_iteracji_temp=tab_pos[4];
if(poziom_iteracji_temp<poziom_iteracji)then
local obiekt_temp=tab_pos[2];local kod_temp=tab_pos[3];
tak=tak and ((obiekt_temp and kod_temp)and((tab_usun[obiekt_temp]) and (tab_usun[obiekt_temp][kod_temp])));
if(not tak)then
tab_wolne=tab_pos;
break;
end;
end;
end;
if(tak)then
tekst_rozwiniety_calego_artykulu=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
else
local obiekt_temp=tab_wolne[2];local kod_temp=tab_wolne[3];
local tekst=tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp];
tekst=mw.ustring.gsub(tekst,p.NormaWzoruKodowaniaTekstu(obiekt,kod),szablon);
tablica_analizy_obiektow_strony_dany_modul[obiekt_temp][kod_temp]=tekst;
if(not tab_usun[obiekt])then tab_usun[obiekt]={};end;tab_usun[obiekt][kod]=true;
end;
end;
-- parametry kodow
local czy_usun_kod=__funkcja10 and __funkcja10(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
-- bazowanie kodow
local tak=__funkcja9 and __funkcja9(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tab_usun) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
-- funkcje koncowe
local tak=__funkcja2 and __funkcja2(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul) or nil;
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
if(not tab_dane)then tab_dane={};end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_dane);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_dane);
end;
table.insert(tab_dane,{szablon,obiekt,kod,poziom_iteracji});
if(__funkcja2)then
local tak=__funkcja2(szablon2 or szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
if(tak)then return tekst_rozwiniety_calego_artykulu,tab_usun;end;
end;
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja,__funkcja2,__funkcja3,__funkcja4,__funkcja5,__funkcja6)
local techniczne_modul=require("Module:Techniczne");
local parametry_modul=require("Module:Parametry");
local iterator,tablica_analizy_obiektow_strony_dany_modul=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja2,__funkcja3,__funkcja4,__funkcja5);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={};
for szablon,obiekt,kod,poziom_iteracji in iterator do
local function ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica)
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=__funkcja(szablon,obiekt,kod,poziom_iteracji,szablon_rodzica,obiekt_rodzica,kod_rodzica,((poziom_iteracji>0)and (szablon_rodzica_zmodyfikowany or szablon_rodzica) or tekst_rozwiniety_calego_artykulu),obiekt_rodzica_zmodyfikowany or obiekt_rodzica,kod_rodzica_zmodyfikowany or kod_rodzica,poziom_iteracji_rodzica,tablica_analizy_obiektow_strony_dany_modul);
tablica_analizy_obiektow_strony_dany_modul=__tablica_analizy_obiektow_strony_dany_modul or tablica_analizy_obiektow_strony_dany_modul;
local function ModyfikacjaBazyKodowoSzablonowaDziecka()
if(dziecko_zmodyfikowane)then
if((obiekt_zmodyfikowany)or(kod_zmodyfikowany))then
if(((obiekt_zmodyfikowany)and(obiekt_zmodyfikowany~=obiekt))or((kod_zmodyfikowany)and(kod_zmodyfikowany~=kod)))then
local __obiekt_zmodyfikowany=obiekt_zmodyfikowany or obiekt;
local __kod_zmodyfikowany=kod_zmodyfikowany or kod;
if(not tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany])then
tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany]={};
end;
tablica_analizy_obiektow_strony_dany_modul[__obiekt_zmodyfikowany][__kod_zmodyfikowany]=dziecko_zmodyfikowane;
local fun1=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,__obiekt_zmodyfikowany,__kod_zmodyfikowany,false) or nil;
if(not __tablica_analizy_obiektow_strony_dany_modul)then
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
local fun2=__funkcja6 and __funkcja6(nil,obiekt,kod,false) or nil;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun3=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil;
end;
else
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=dziecko_zmodyfikowane;
local fun4=__funkcja6 and __funkcja6(dziecko_zmodyfikowane,obiekt,kod,false) or nil;
end;
end;
end;
local function ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany)
local __obiekt_rodzica_zmodyfikowany=obiekt_rodzica_zmodyfikowany or obiekt_rodzica;
local __kod_rodzica_zmodyfikowany=kod_rodzica_zmodyfikowany or kod_rodzica;
tablica_analizy_obiektow_strony_dany_modul[__obiekt_rodzica_zmodyfikowany][__kod_rodzica_zmodyfikowany]=szablon_rodzica_zmodyfikowany;
local fun7=__funkcja6 and __funkcja6(szablon_rodzica_zmodyfikowany,__obiekt_rodzica_zmodyfikowany,__kod_rodzica_zmodyfikowany,true) or nil;
if(not __tablica_analizy_obiektow_strony_dany_modul)then
if((obiekt_rodzica_zmodyfikowany)or(kod_rodzica_zmodyfikowany))then
if(
((obiekt_rodzica_zmodyfikowany)and(obiekt_rodzica_zmodyfikowany~=obiekt_rodzica))
or((kod_rodzica_zmodyfikowany)and(kod_rodzica_zmodyfikowany~=kod_rodzica))
)then
tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica]=nil;
local fun5=__funkcja6 and __funkcja6(szablon_rodzica,obiekt_rodzica,kod_rodzica,true) or nil;
end;
end;
end;
end;
if(kod_kodowy_wynik)then
if(poziom_iteracji>0)then
if(not szablon_rodzica_zmodyfikowany)then
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
local szablon_rodzica=tablica_analizy_obiektow_strony_dany_modul[obiekt_rodzica][kod_rodzica];
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica);
ModyfikacjaBazyKodowoSzablonowaDziecka();
end;
end;
else
ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany);
ModyfikacjaBazyKodowoSzablonowaDziecka();
end;
else
if(not parametry_modul.TypeBoolean(kod_kodowy_wynik))then
local ile;
tekst_rozwiniety_calego_artykulu,ile=mw.ustring.gsub(tekst_rozwiniety_calego_artykulu,p.NormaWzoruKodowaniaTekstu(obiekt,kod),techniczne_modul["TekstBezOdwołańDoParametrówWeWzorze"](kod_kodowy_wynik));
if(ile>0)then
ModyfikacjaBazyKodowoSzablonowaDziecka();
end;
end;
end;
elseif(szablon_rodzica_zmodyfikowany)then
if(poziom_iteracji>0)then
ModyfikacjaBazyKodowoSzablonowaRodzica(szablon_rodzica_zmodyfikowany);
else
tekst_rozwiniety_calego_artykulu=szablon_rodzica_zmodyfikowany;
end;
ModyfikacjaBazyKodowoSzablonowaDziecka();
else
ModyfikacjaBazyKodowoSzablonowaDziecka();
end;
return kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul;
end;
if(poziom_iteracji==0)then
ZamienianieKodowe(nil,nil,nil,nil,nil);
else
for i=#tab_poziom_obiekt,1,-1 do
local tab=tab_poziom_obiekt[i];
local poziom_iteracji_rodzica=tab[4];
if(poziom_iteracji_rodzica<poziom_iteracji)then
local szablon_rodzica=tab[1];
local obiekt_rodzica=tab[2];
local kod_rodzica=tab[3];
local szablon_rodzica_zmodyfikowany=tab[5];
local obiekt_rodzica_zmodyfikowany=tab[6];
local kod_rodzica_zmodyfikowany=tab[7];
local kod_kodowy_wynik,dziecko_zmodyfikowane,obiekt_zmodyfikowany,kod_zmodyfikowany,szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,__tablica_analizy_obiektow_strony_dany_modul=ZamienianieKodowe(szablon_rodzica_zmodyfikowany,obiekt_rodzica_zmodyfikowany,kod_rodzica_zmodyfikowany,szablon_rodzica,obiekt_rodzica,kod_rodzica,poziom_iteracji_rodzica);
if(szablon_rodzica_zmodyfikowany)then
tab[5]=szablon_rodzica_zmodyfikowany;
tab[6]=obiekt_rodzica_zmodyfikowany;
tab[7]=kod_rodzica_zmodyfikowany;
end;
break;
end;
end;
end;
if(poziom_iteracji_poprz>poziom_iteracji)then
for i=poziom_iteracji_poprz,poziom_iteracji,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji)then
elseif(poziom_iteracji_poprz==poziom_iteracji)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{szablon,obiekt,kod,poziom_iteracji,});
poziom_iteracji_poprz=poziom_iteracji;
end;
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3,__funkcja4,__funkcja5)
local tablica_szablonow_z_naglowkami=nil;
local tab_sam;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(poziom_iteracji==0)then
tablica_szablonow_z_naglowkami=nil;
tab_sam=nil;
else
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
end;
----
local wynik,sam_obiekt,sam_kod=__funkcja(szablon,obiekt,kod,0,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(wynik)then
if(sam_obiekt and sam_kod)then
return false;
end;
end
local czy_nie_wyzej_sam=false;
local czy_nie_wyzej_poziom=nil;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,szablon,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,nil,nil,nil,function(szablon,obiekt,kod)
if((czy_nie_wyzej_sam)or(czy_nie_wyzej_poziom))then
return "";
end;
end);
local poziom_iteracji_poprz=-1;
local tab_poziom_obiekt={}
if(poziom_iteracji==0)then table.insert(tab_poziom_obiekt,{obiekt,kod});end;
for szablon2,obiekt2,kod2,poziom_iteracji2 in iterator do
local wynik,sam_obiekt,sam_kod,czy_inne_ustawienia=__funkcja(szablon2,obiekt2,kod2,poziom_iteracji2+1,false,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then
if(poziom_iteracji_poprz>poziom_iteracji2)then
for i=poziom_iteracji_poprz,poziom_iteracji2,-1 do
table.remove(tab_poziom_obiekt);
end;
--elseif(poziom_iteracji_poprz<poziom_iteracji2)then
elseif(poziom_iteracji_poprz==poziom_iteracji2)then
table.remove(tab_poziom_obiekt);
end;
table.insert(tab_poziom_obiekt,{obiekt2,kod2});
poziom_iteracji_poprz=poziom_iteracji2;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
for _,tab in ipairs(tab_poziom_obiekt)do
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[tab[1]])then tablica_szablonow_z_naglowkami[tab[1]]={};end;
tablica_szablonow_z_naglowkami[tab[1]][tab[2]]=true;
end;
if(sam_obiekt and sam_kod)then
if(not tab_sam)then tab_sam={};end;
if(not tab_sam[sam_obiekt])then tab_sam[sam_obiekt]={};end;
tab_sam[sam_obiekt][sam_kod]=true;
czy_nie_wyzej_sam=true;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=false;
end;
else
if(not tablica_szablonow_z_naglowkami)then tablica_szablonow_z_naglowkami={};end;
if(not tablica_szablonow_z_naglowkami[obiekt2])then tablica_szablonow_z_naglowkami[obiekt2]={};end;
tablica_szablonow_z_naglowkami[obiekt2][kod2]=true;
czy_nie_wyzej_sam=false;
if(czy_inne_ustawienia)then
czy_nie_wyzej_poziom=true;
end;
end;
---poziom_iteracji_poprz=poziom_iteracji2;
end;
end;
if(wynik)then return true;end;
if((tab_sam)and(tab_sam[obiekt])and(tab_sam[obiekt][kod]))then return false;end;
if((tablica_szablonow_z_naglowkami)and(tablica_szablonow_z_naglowkami[obiekt])and(tablica_szablonow_z_naglowkami[obiekt][kod]))then return true;end;
return nil;
end,__funkcja4,__funkcja5);
return tekst_rozwiniety_calego_artykulu;
end;
function p.KompletowanieSzablonoweZakodowanegoTekstuBezPewnychSzablonowychNormZgodnieZJegoSzablonowymiElementami(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__funkcja,__funkcja1,__funkcja2,__funkcja3)
local tablica_szablonow_z_naglowkami=nil;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul,__funkcja1,__funkcja2,__funkcja3,function(szablon,obiekt,kod,poziom_iteracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
local wynik=__funkcja(szablon,obiekt,kod,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
if(not wynik)then return nil;end;
return true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
local function FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,czy_niekodowane,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,(dwukropek and ":" or "")..nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
if((not tabela_parametrow_szablonu)or(not nazwa_szablonu))then return;end;
if(__FUNKCJA)then
local wynik=__FUNKCJA(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then return;end;
end;
local pelna_nazwa_szablonu=p["PełnaNazwaStronyNazwySzablonu"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA2)then
local wynik=__FUNKCJA2(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return;
end;
end;
if((czy_niekodowane)and(__FUNKCJA3))then
local wynik=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(wynik)then
return wynik;
end;
end;
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
local tekst;
if((not czy_niekodowane)and(__FUNKCJA3))then
tekst=__FUNKCJA3(pelna_nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow);
if(not tekst)then
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
else
local techniczne_modul=require("Module:Techniczne");
local pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true,true,nil,nil,nil,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end;
if(not tekst)then return;end;
if((czy_niekodowane)and(not czy_nie_brak_parametrow))then return tekst;end;
local html_modul=require("Module:Html");
tekst=p:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,pelna_nazwa_szablonu,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst)
if(czy_nie_brak_parametrow)then
if(obiekt=="ZMIENNA")then
local zmienna;local wartosc_domyslna;
zmienna=mw.ustring.match(szablon,"^{{{([^{}|]*)}}}$");
if(not zmienna)then
zmienna,wartosc_domyslna=mw.ustring.match(szablon,"^{{{([^{}|]*)|([^{}]*)}}}$");
end;
zmienna=mw.text.trim(zmienna);
local wartosc_zmiennej=tabela_parametrow_szablonu[tonumber(zmienna) or zmienna];
if(not wartosc_zmiennej)then
if(wartosc_domyslna)then return wartosc_domyslna;end;
local szablon=html_modul["KodyHTMLZnakówWikiCiągu"](szablon);
return szablon;
end;
return wartosc_zmiennej;
end;
end;
end,
function()
return numer_szablonu;
end,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,function(nazwa_szablonu,tabela_modyfikatorow)
return __PRZEDFUNKCJA(nazwa_szablonu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
end,
function(nazwa_szablonu,tabela_modyfikatorow,rezultat)
return __FUNKCJA0 and __FUNKCJA0(nazwa_szablonu,tabela_modyfikatorow,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or nazwa_szablonu;
end,false);
end;
end;
function p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu)
local tablica_modulu_szablonowe=p.TablicaTransportuSzablonowe(self);
tablica_modulu_szablonowe.tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow or {};
local tablica_szablonow=tablica_modulu_szablonowe.tablica_szablonow;
----
tablica_szablonow[nazwa_modulu]=tablica_szablonow[nazwa_modulu] or {};
local tablica_danych_parametrow_szablonu_strony=tablica_szablonow[nazwa_modulu];
return tablica_danych_parametrow_szablonu_strony;
end;
function p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
if(not tablica_analizy_obiektow_strony_dany_modul)then
if(not self.tablica_analizy_obiektow_strony_dany_modul)then self.tablica_analizy_obiektow_strony_dany_modul={};end;
if(not self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca])then self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca]={};end;
---
tablica_analizy_obiektow_strony_dany_modul=self.tablica_analizy_obiektow_strony_dany_modul[nazwa_modulu_aktualna_czy_biezaca];
end;
---
local tablica_danych_parametrow_szablonu_strony=tablica_danych_parametrow_szablonu_strony or p.TablicaZanalizowanychInformacjiSzablonowychParsowania(self,nazwa_modulu_aktualna_czy_biezaca);
return tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony;
end;
function p.RozwijanieNiezakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tekst_rozwiniety_calego_artykulu=p.KodowanieSzablonowegoTekstuZObiektamiWikikodu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
return;
end,
function(szablon,obiekt,kod,tekst,tablica_analizy_obiektow_strony_dany_modul,numer_szablonu)
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
---
return FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,true,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
end,nil,nil,nil,nil,nil,nil,__FUNKCJA_PARAMETRY);
return tekst_rozwiniety_calego_artykulu;
end;
function p.RozwijanieZakodowanegoSzablonu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY)
local tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=p.UzyskiwanieTablicyKodowaniaIOpcjiParametrowychSzablonowychDlaStrony(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
----
local nazwy_modul=require("Module:Nazwy");
local dwukropek=(nazwy_modul["NAZWAPRZESTRZENI"](nazwa_modulu_aktualna_czy_biezaca)=="");
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst)
if(obiekt=="SZABLON")then
local numer_szablonu=p.NumerSzablonuKodowaniaTekstu(self,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
----
szablon=__FUNKCJA4 and __FUNKCJA4(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony) or szablon;
----
local wynik=FunkcjaIterajacaRozwijanegoSzablonu(szablon,obiekt,kod,tekst,numer_szablonu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_modulu_aktualna_czy_biezaca,dwukropek,false,__PRZEDFUNKCJA,__FUNKCJA0,__FUNKCJA,__FUNKCJA2,__FUNKCJA3,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
if(wynik)then return wynik;end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
p["UstalanieNazwyWywołania"]=function(nazwa,__FUNKCJA,__FUNKCJA2)
local html_modul=require("Module:Html");
nazwa=html_modul.DecodeHtml(nazwa,true);
local rezultat=nil;
if(__FUNKCJA)then
local nazwa_rozwinieta;
nazwa_rozwinieta,rezultat=__FUNKCJA(nazwa);
nazwa=nazwa_rozwinieta or nazwa;
end;
local nazwa,modyfikatory,tabela_modyfikatorow=p.WydzielanieOpcjiModyfikatorowych(nazwa);
nazwa=((__FUNKCJA2) and (not rezultat)) and (__FUNKCJA2(nazwa,tabela_modyfikatorow) or nazwa) or nazwa;
if(not tabela_modyfikatorow)then
nazwa=html_modul.EncodeId(nazwa);
return nazwa;
end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=mw.ustring.match(nazwa,"^[%s_]*[^:]") and nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
if(nazwa_przestrzeni)then
if(nazwa_przestrzeni=="")then
if(tabela_modyfikatorow["#invoke:"])then
nazwa="Module:"..nazwa;
elseif(tabela_modyfikatorow["int:"])then
nazwa="MediaWiki:"..nazwa;
end;
else
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((nazwy_np_modul.Module~=nazwa_przestrzeni)and(tabela_modyfikatorow["#invoke:"]))then
nazwa="Module:"..nazwa;
elseif((nazwy_np_modul.MediaWiki~=nazwa_przestrzeni)and(tabela_modyfikatorow["int:"]))then
nazwa="MediaWiki:"..nazwa;
end;
end;
end;
nazwa=html_modul.EncodeId(nazwa);
return nazwa,tabela_modyfikatorow;
end;
p["SzablonowaNazwaStrony"]=function(czy_szablon,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony;
end;
end;
end;
if(not czy_szablon)then return;end;
local nazwy_modul=require("Module:Nazwy");
local parametry_modul=require("Module:Parametry");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](czy_szablon,tabela_nazw);
local nazwa_szablonu;
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(czy_szablon,"^%s*[^:]");
if((czy_nie_dwukropek)or(czy_szablon==""))then
local czy_szablon=parametry_modul["Odstępy"]{nazwa=czy_szablon,["wewnątrz"]="tak",};
nazwa_szablonu=(tabela_nazw.m) and mw.getContentLanguage():ucfirst(czy_szablon) or czy_szablon;
else
nazwa_szablonu=":"..nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
elseif(nazwa_przestrzeni_szablonu==nazwy_np_modul.Template)then
nazwa_szablonu=nazwy_modul["NAZWASTRONY"]({nazwa=czy_szablon,},tabela_nazw);
else
nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](czy_szablon,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[3])then tablica_danych_parametrow_szablonu_strony[3]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony=nazwa_szablonu;
end;
return nazwa_szablonu;
end;
p["PełnaNazwaStronyNazwySzablonu"]=function(frame,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony;
end;
end;
end;
local parametry_modul=require("Module:Parametry");
----
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa_szablonu=PobierzParametr(1) or PobierzParametr("nazwa");
----
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
----
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"](nazwa_szablonu,tabela_nazw);
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
local czy_nie_dwukropek=mw.ustring.match(nazwa_szablonu,"^%s*[^:]");
if(czy_nie_dwukropek)then
local nazwa_szablonu=parametry_modul["Odstępy"]{nazwa=nazwa_szablonu,["wewnątrz"]="tak",};
pelna_nazwa_szablonu=((nazwy_np_modul.Template~="")and (nazwy_np_modul.Template..":") or "")..((tabela_nazw.m)and mw.getContentLanguage():ucfirst(nazwa_szablonu) or nazwa_szablonu);
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
else
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"](nazwa_szablonu,tabela_nazw);
end;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[5])then tablica_danych_parametrow_szablonu_strony[5]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[5];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.generalna_nazwa_strony=pelna_nazwa_szablonu;
end;
return pelna_nazwa_szablonu;
end;
p["PełnaNazwaStronyWywołańSzablonowych"]=function(nazwa_szablonu,klucz_przestrzeni,klucz_projektu,kod_jezyka,kod_projektu)
if(not nazwa_szablonu)then return;end;
local nazwy_modul=require("Module:Nazwy");
local tabela_nazw={};
local nazwa_przestrzeni_szablonu=nazwy_modul["NAZWAPRZESTRZENI"]({nazwa=nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
local klucz_przestrzeni_niekanoniczna;
local wiki_modul=require("Module:Wiki");
local czy_biezaca;
if(tabela_nazw.czy_aktualna_wiki==nil)then
czy_biezaca=wiki_modul["CzyBieżącaWiki"]{["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod projektu"]=kod_projektu,};
else
czy_biezaca=tabela_nazw.czy_aktualna_wiki;
end;
if(czy_biezaca)then
klucz_przestrzeni_niekanoniczna=nazwy_modul.Np{nazwa=klucz_przestrzeni,};
else
klucz_przestrzeni_niekanoniczna=nazwy_modul.NpDane{nazwa=klucz_przestrzeni,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,};
end;
local pelna_nazwa_szablonu;
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if(nazwa_przestrzeni_szablonu==nazwy_np_modul.Main)then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
elseif(((klucz_przestrzeni=="MediaWiki")or(klucz_przestrzeni=="Module"))and(nazwa_przestrzeni_szablonu~=klucz_przestrzeni_niekanoniczna))then
pelna_nazwa_szablonu=((klucz_przestrzeni~="")and (klucz_przestrzeni..":") or "")..nazwa_szablonu;
else
pelna_nazwa_szablonu=nazwa_szablonu;
end;
local tabela_nazw={};
pelna_nazwa_szablonu=nazwy_modul["PEŁNANAZWASTRONY"]({nazwa=pelna_nazwa_szablonu,["klucz projektu"]=klucz_projektu,["kod języka"]=kod_jezyka,["kod_projektu"]=kod_projektu,},tabela_nazw);
return pelna_nazwa_szablonu;
end;
p["NazwaSzablonuWywołania"]=function(szablon,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami;
end;
end;
end;
local czy_z_parametrami;
local czy_szablon,zawartosc=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*|([^{}]*)}}$");
if(not czy_szablon or not zawartosc)then
czy_szablon=mw.ustring.match(szablon,"^{{%s*([^{}|]-)%s*}}$");
if(not czy_szablon)then return;end;
czy_z_parametrami=false;
else
czy_z_parametrami=true;
end;
--czy_szablon=__FUNKCJA and (__FUNKCJA(czy_szablon) or czy_szablon) or czy_szablon;
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](czy_szablon,__FUNKCJA,__FUNKCJA2);
local nazwa_strony=p["SzablonowaNazwaStrony"](czy_szablon);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[4])then tablica_danych_parametrow_szablonu_strony[4]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[4];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_strony=nazwa_strony;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=tabela_modyfikatorow;
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_z_parametrami=czy_z_parametrami;
end;
return nazwa_strony,tabela_modyfikatorow,czy_z_parametrami;
end;
function p.TablicaTransportuSzablonowe(self)
return self;
end;
local function ZbierzParametrSzablonu(tworzona_tabela, kawalek_wywolania,trimuj_numerowane,czy_ramka_lua)
if((not czy_ramka_lua)or(not czy_ramka_lua[1])or((czy_ramka_lua[1])and(czy_ramka_lua[2])))then
local czy_parser=czy_ramka_lua and czy_ramka_lua[3];
local kawalek_wywolania_element_nienazwany=mw.ustring.match(kawalek_wywolania,"^([^|"..((not czy_parser) and ("=") or "").."]-)$");
if(kawalek_wywolania_element_nienazwany)then
----
local __metatablica=getmetatable(tworzona_tabela);
local len=__metatablica.__len(tworzona_tabela);
----
tworzona_tabela[len+1]={((trimuj_numerowane) and (mw.text.trim(kawalek_wywolania_element_nienazwany)) or kawalek_wywolania_element_nienazwany),true,};
return tworzona_tabela;
else
---
local kawalek_wywolania_klucz,kawalek_wywolania_wartosc=mw.ustring.match(kawalek_wywolania,"^%s*([^|=]-)%s*=%s*([^|]-)%s*$");
if((kawalek_wywolania_klucz)and(kawalek_wywolania_wartosc))then
if(not mw.ustring.match(kawalek_wywolania_klucz,"^%s*%d+%s*$"))then
tworzona_tabela[mw.text.trim(kawalek_wywolania_klucz)]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
else
tworzona_tabela[tonumber(mw.text.trim(kawalek_wywolania_klucz))]=mw.text.trim(kawalek_wywolania_wartosc);
return tworzona_tabela;
end;
else
return nil;
end;
end;
else
local __metatablica=getmetatable(tworzona_tabela);
__metatablica.newindex(true,kawalek_wywolania);
czy_ramka_lua[2]=true;
return tworzona_tabela;
end;
return nil;
end;
local function ParametrySzablonu(parametry_wywolania_szablonu,parametry_szablonu,trimuj_numerowane,czy_ramka_lua)
local kawalek_wywolania,dalszy_kawalek_wywolania=mw.ustring.match(parametry_wywolania_szablonu,"^([^|]*)|(.*)$");
if(not kawalek_wywolania)then
kawalek_wywolania=parametry_wywolania_szablonu;
end;
if(not dalszy_kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua);
return parametry_szablonu;
end;
if(kawalek_wywolania)then
ZbierzParametrSzablonu(parametry_szablonu,kawalek_wywolania,trimuj_numerowane,czy_ramka_lua);
return ParametrySzablonu(dalszy_kawalek_wywolania,parametry_szablonu,trimuj_numerowane,czy_ramka_lua);
end;
return nil;
end;
p.MetaTabelkaParsowanieSzablonu=function(__metatablica)
local parametry_modul=require("Module:Parametry");
local i=1;
local tablica={};
__metatablica.PobierzGeneralnaTablica=function(t)
return tablica;
end;
__metatablica.__len=function(t)
return #tablica;
end;
__metatablica.__index=function(t,klucz)
local tab=tablica[klucz];
if(tab==nil)then return nil;end;
return tab[1];
end;
__metatablica.index=function(t,klucz)
return tablica[klucz];
end;
__metatablica.__newindex=function(t,klucz,wartosc)
if(wartosc~=nil)then
local tab=tablica[klucz];
if(not tab)then
if(parametry_modul.TypeTable(wartosc))then
tablica[klucz]={wartosc[1],i,wartosc[2],};
else
tablica[klucz]={wartosc,i,};
end;
i=i+1;
else
if(parametry_modul.TypeTable(wartosc))then
tab[1]=wartosc[1];
tab[3]=wartosc[2];
else
tab[1]=wartosc;
end;
end;
else
local tab=tablica[klucz];
if(tab~=nil)then
local i=tab[2];
tablica[klucz]=nil;
----
for name,value in pairs(tablica)do
local i2=value[2];
if(i2>i)then
value[2]=value[2]-1;
end;
end;
end;
end;
end;
__metatablica.newindex=function(t,klucz,wartosc)
tablica[klucz]=wartosc;
end;
local function iter_pairs(tablica,klucz)
klucz=next(tablica,klucz);
local tab = tablica[klucz];
if tab then
return klucz, tab[1];
end
end;
__metatablica.__pairs=function(t)
return iter_pairs,tablica,nil;
end;
local function iter_ipairs(tablica,i)
i=i+1;
local tab = tablica[i];
if tab then
return i, tab[1];
end
end;
__metatablica.__ipairs=function(t)
return iter_ipairs,tablica,0;
end;
__metatablica.KopiujMetaTabela=function(value,funkcja,funkcja2)
local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(value);
local __metatablica2={};
p.MetaTabelkaParsowanieSzablonu(__metatablica2);
local value2={};
local iteratorFun=function(value)
local klucz=nil;
return function()
klucz=next(value,klucz);
return klucz;
end;
end;
local iterator=iteratorFun(value);
for klucz in iterator do
rawset(value2,klucz,rawget(value,klucz));
end;
setmetatable(value2,__metatablica2);
local tabelka_metatable2=__metatablica2.PobierzGeneralnaTablica(value2);
funkcja2(tabelka_metatable,tabelka_metatable2);
funkcja(value2,false);
end;
end;
p["ParsowanieWywołaniaSzablonu"] = function(wywolanie_szablonu,trimuj_numerowane,__FUNKCJA,__FUNKCJA2,tablica_danych_parametrow_szablonu_strony,kod)
local nazwa_parsowania=nil;local modyfikatory_parsowania=nil;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
if((tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu)and(tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow))then
if(tablica_danych_parametrow_szablonu_strony_numer_kod.parametry)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.parametry,tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu,tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
nazwa_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
modyfikatory_parsowania=tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow;
end;
end;
end;
end;
----
local function NazwaSzablonu(nazwa_szablonu)
if((not nazwa_parsowania)or(not modyfikatory_parsowania))then
local nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna=p["UstalanieNazwyWywołania"](nazwa_szablonu,__FUNKCJA,__FUNKCJA2);
nazwa_szablonu_ostateczna=p["SzablonowaNazwaStrony"](nazwa_szablonu_ostateczna);
return nazwa_szablonu_ostateczna,tabela_modyfikatorow_ostateczna;
else
return nazwa_parsowania,modyfikatory_parsowania;
end;
end;
local ParseryTagLua=function(tabela_modyfikatorow)
local czy_lua;
local czy_parser;
if(tabela_modyfikatorow)then
czy_lua=tabela_modyfikatorow["#invoke:"];
if(not czy_lua)then
for name,value in pairs(tabela_modyfikatorow)do
local hash=mw.ustring.sub(name,1,1);
if((hash)and(hash=="#"))then
czy_parser=true;
break;
end;
end;
end;
end;
local czy_ramka_lua={czy_lua,false,czy_parser,};
return czy_ramka_lua;
end;
local wywolanie_bez_parametrow=mw.ustring.match(wywolanie_szablonu,"^{{[^|]-}}$");
if(not wywolanie_bez_parametrow)then
local nazwa_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*|.-}}$");
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
local parametry_wywolania_szablonu=mw.ustring.match(wywolanie_szablonu,"^{{[^|]*|(.*)}}$");
----
local __metatablica={};
p.MetaTabelkaParsowanieSzablonu(__metatablica);
local tabela_parametrow_szablonu={};
setmetatable(tabela_parametrow_szablonu,__metatablica);
----
local czy_ramka_lua=ParseryTagLua(tabela_modyfikatorow);
----
tabela_parametrow_szablonu=ParametrySzablonu(parametry_wywolania_szablonu,tabela_parametrow_szablonu,trimuj_numerowane,czy_ramka_lua);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
else
local nazwa_szablonu=mw.text.trim(mw.ustring.match(wywolanie_szablonu,"^{{%s*([^|]-)%s*}}$"));
if(nazwa_szablonu)then
local nazwa_szablonu,tabela_modyfikatorow=NazwaSzablonu(nazwa_szablonu);
----
local __metatablica={};
p.MetaTabelkaParsowanieSzablonu(__metatablica);
local tabela_parametrow_szablonu={};
setmetatable(tabela_parametrow_szablonu,__metatablica);
----
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[1])then tablica_danych_parametrow_szablonu_strony[1]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[1];
tablica_danych_parametrow_szablonu_strony_numer[kod]={};
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.parametry=tabela_parametrow_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu=nazwa_parsowania or nazwa_szablonu;
tablica_danych_parametrow_szablonu_strony_numer_kod.tabela_modyfikatorow=modyfikatory_parsowania or tabela_modyfikatorow;
end;
----
return tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow;
else return nil;end;
end;
end;
function p.WydzielanieOpcjiModyfikatorowych(pole_nazwy)
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local opis_elementowe_modyfikatory=szablonowe_dane_modul.opis_elementowe_modyfikatory;
local modyfikatory="";
local tab_mod=nil;
if(not mw.ustring.match(pole_nazwy,opis_elementowe_modyfikatory))then
return pole_nazwy,modyfikatory,tab_mod;
end;
----
local tab_modyfikatory=szablonowe_dane_modul.tablica_elementowe_modyfikatory_szablonowe;
----
local function PojedynczeModyfikatory(pole,modyfikatory)
for modyfikator,tab in pairs(tab_modyfikatory) do
local modyfikator_uzyty,pole_dalej=mw.ustring.match(pole,"^("..tab[1]..")(.*)$");
if(modyfikator_uzyty)then
if(not tab_mod)then tab_mod={};end;
if(not tab_mod[modyfikator])then
tab_mod[modyfikator]=true;
end;
modyfikatory=modyfikatory..modyfikator_uzyty;
return PojedynczeModyfikatory(pole_dalej,modyfikatory)
end;
end;
return pole,modyfikatory;
end;
local pole_ostateczne,modyfikatory_ostateczne=PojedynczeModyfikatory(pole_nazwy,modyfikatory);
return pole_ostateczne,modyfikatory_ostateczne,tab_mod;
end;
function p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#switch:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryCharakterystyczneSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu)
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#tag:"])
)then
return true;
end;
end;
end;
function p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod)
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon;
end;
end;
end;
local function RozpatrywanieSzablonowe()
if(tabela_modyfikatorow)then
if((tabela_modyfikatorow["int:"])
or(tabela_modyfikatorow["#if:"])
or(tabela_modyfikatorow["#ifeq:"])
or(tabela_modyfikatorow["#ifexpr:"])
or(tabela_modyfikatorow["#expr:"])
or(tabela_modyfikatorow["#iferror:"])
or(tabela_modyfikatorow["#ifexist:"])
or(tabela_modyfikatorow["#tag:"])
or(tabela_modyfikatorow["#switch:"])
or(tabela_modyfikatorow["#property:"])
or(tabela_modyfikatorow["#invoke:"])
or(tabela_modyfikatorow["gender:"])
or (tabela_modyfikatorow["ucfirst:"])
or (tabela_modyfikatorow["lcfirst:"])
or (tabela_modyfikatorow["uc:"])
or (tabela_modyfikatorow["lc:"])
)then
return false;
end;
end;
if((nazwa_szablonu)and(nazwa_szablonu~=""))then
local parametry_modul=require("Module:Parametry");
if((parametry_modul.TypeBoolean(tabela_parametrow_szablonu))and(tabela_parametrow_szablonu))then return true;end;
if(tabela_parametrow_szablonu)then
local parametry_modul=require("Module:Parametry");
local czy_nie_brak_parametrow=parametry_modul["CzySąElementyTablicy"](tabela_parametrow_szablonu);
if(czy_nie_brak_parametrow)then return true;end;
end;
return ((not mw.ustring.match(nazwa_szablonu,"^[%s_]*#[%s_]*%a+[%s_]*:")) and true or false);
end;
return true;
end;
local wynik=RozpatrywanieSzablonowe();
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[2])then tablica_danych_parametrow_szablonu_strony[2]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[2];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.czy_normalny_szablon=wynik;
end;
return wynik;
end;
function p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane)
local parametry_modul=require("Module:Parametry");
local tablica_obiektow_strony_danych_kodow_specjalnych_modul={};
local tab_grupa={};
local math_numer=0;local licznik_linkz=1;
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
local tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN"))then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN"))then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
-----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
elseif((nazwa_szablonu=="Ref")or(nazwa_szablonu=="O"))then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
end;
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["REF"..grupa][tab_grupa[grupa]]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("REF"..grupa,tab_grupa[grupa]);
end;
elseif(obiekt=="MATH")then
math_numer=math_numer+1;
----
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"]={};end;
if(not tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer])then tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][math_numer]=szablon;end;
----
return p.NormaKoduKodowaniaTekstu("POSTMATH",math_numer);
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
return szablon;
end);
return tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul;
end;
function p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,trimuj_numerowane,__FUNKCJA_INNE_OPERACJE,__FUNKCJA_INNE_OPERACJE2,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE)
local parametry_modul=require("Module:parametry");
local tab_grupa={};local licznik_linkz=1;
local tab_usun;
tekst_rozwiniety_calego_artykulu,tab_usun=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="SZABLON")then
return p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if((nazwa_szablonu=="R")or(nazwa_szablonu=="RN"))then
local grupa="";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..tab_grupa[grupa].."]"
elseif((nazwa_szablonu=="U")or(nazwa_szablonu=="UN"))then
local grupa="uwaga";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
-----
return "["..grupa.." "..tab_grupa[grupa].."]";
elseif((nazwa_szablonu=="Ref")or(nazwa_szablonu=="O"))then
local grupa=tabela_parametrow_szablonu["grupa"] or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
end,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,trimuj_numerowane);
elseif(obiekt=="ZNACZNIK")then
local nazwa,zawartosc,tab_atrybuty=p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if(nazwa=="ref")then
tab_atrybuty=tab_atrybuty or {};
local grupa=tab_atrybuty["group"];
grupa=parametry_modul.TypeString(grupa) and grupa or "";
tab_grupa[grupa]=(tab_grupa[grupa] or 0)+1;
----
return "["..((grupa~="")and(grupa.." ") or "")..tab_grupa[grupa].."]";
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nazwa,zawartosc,tab_atrybuty,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
else
if(__FUNKCJA_INNE_OPERACJE)then
return __FUNKCJA_INNE_OPERACJE(szablon,obiekt,kod,nil,nil,nil,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul);
end;
end;
return nil,true;--szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end,nil,nil,nil,function(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul)
if(obiekt=="LINKZ")then
local url=mw.ustring.match(szablon,"^%[(%S+)%s*%]$")
if(url)then
local szablon="["..url.." ["..licznik_linkz.."]]";
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=szablon;
licznik_linkz=licznik_linkz+1;
return szablon;
end;
end;
if(__FUNKCJA_INNE_OPERACJE2)then
return __FUNKCJA_INNE_OPERACJE2(szablon,obiekt,kod,poziom_numeracji,nazwa_modulu,tablica_analizy_obiektow_strony_dany_modul);
end;
return szablon;
end,nil,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE_RODZICA,__FUNKCJA_OPERACJE_CZY_W_LINKU,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE);
return tekst_rozwiniety_calego_artykulu,tab_usun;
end;
function p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw)
local adres,nazwa=mw.ustring.match(linkw,"^%[%[([^|]-)|(.-)%]%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkw,"^%[%[([^|]-)%]%]$");
if(adres)then return adres;end;
return nil;
end;
function p.WalidacjaLinkuProjektowego(linkw)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkuProjektowego(linkw);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^[^|]-[%[%]]+[^|]-$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%[%[") or mw.ustring.match(nazwa,"%]%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz)
local adres,nazwa=mw.ustring.match(linkz,"^%[(%S+)%s+(.-)%]$")
if((adres)and(nazwa))then return adres,nazwa;end;
local adres=mw.ustring.match(linkz,"^%[(.-)%]");
return adres;
end;
function p.WalidacjaLinkuNieProjektowego(linkz)
local adres,nazwa=p.WydzielPoleAdresoweNazwoweLinkNieProjektowego(linkz);
if(not adres)then return nil;end;
local spacje_adresu=mw.ustring.match(adres,"^[%s_]*$");
if(spacje_adresu)then return nil;end;
local adres_w_linii=mw.ustring.match(adres,"\n");
if(adres_w_linii)then return nil;end;
local walidacja_adresu=mw.ustring.match(adres,"^%S*[%[%]]%S*$");
if(walidacja_adresu)then return nil;end;
if(not nazwa)then return adres,nazwa;end;
local nazwa_w_linii=mw.ustring.match(nazwa,"\n");
if(nazwa_w_linii)then return nil;end;
local walidacja_nazwy=mw.ustring.match(nazwa,"%]");
if(walidacja_nazwy)then return nil;end;
return adres,nazwa;
end;
function p.OdkodowanieZakodowanychNormKodowychNieschematycznychRzeczy(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul)
local tablica_kodow={};local tak=false;
local iterator=p.IteratorSzablonowyZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
local szablonowe_dane_modul=mw.loadData("Module:Szablonowe/dane");
local tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki=szablonowe_dane_modul.tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki;
for szablon,obiekt,kod in iterator do
if(tablica_kodowa_obiektowa_typowo_mechanizmu_mediawiki[obiekt])then
local iter=mw.ustring.gmatch(szablon,p.NormaWzoruKodowaniaTekstu());
for obiekt,kod in iter do
if(not tablica_kodow[obiekt])then tablica_kodow[obiekt]={};end;
tablica_kodow[obiekt][kod]=true;
tak=true;
end;
end;
end;
--if(not tak)then return tekst_rozwiniety_calego_artykulu;end;
local strony_modul=require("Module:Strony");
local specjalne_modul=require("Module:Specjalne");
--local frame=mw.getCurrentFrame();
tekst_rozwiniety_calego_artykulu=p.KompletowanieSzablonoweZakodowanegoTekstu(self,tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon2,obiekt2,kod2)
if((tablica_kodow)and(tablica_kodow[obiekt2])and(tablica_kodow[obiekt2][kod2]))then
if(mw.ustring.gmatch(szablon2,p.NormaWzoruKodowaniaTekstu()))then
szablon2=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
return szablon2;
end;
elseif(obiekt2=="LINKW")then
if(mw.ustring.match(szablon2,"^%[%[[%s:_]*%]%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
if(not specjalne_modul["CzyPlik"](szablon_rozwiniete))then
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local czy_nie_linkw=not p.WalidacjaLinkuProjektowego(szablon_rozwiniete);
if(czy_nie_linkw)then
return szablon2;
end;
end;
elseif(obiekt2=="LINKZ")then
if(mw.ustring.match(szablon2,"^%[%s*%]$"))then return szablon2;end;
local szablon_rozwiniete=p.KompletowanieSzablonoweZakodowanegoTekstu(self,szablon2,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
--szablon_rozwiniete=frame:preprocess(szablon_rozwiniete);
local adres,nazwa=p.WalidacjaLinkuNieProjektowego(szablon_rozwiniete);
if(adres)then
local czy_linkz=strony_modul.SprawdzanieURL(adres);
if(not czy_linkz)then return szablon2;end;
else
return szablon2;
end;
end;
return nil,true;
end);
return tekst_rozwiniety_calego_artykulu;
end;
p["PokazanieWywołaniaSzablonu"]=function(szablon, args)
local result = {};
table.insert(result, mw.text.nowiki("{{"));
if mw.isSubsting() then
table.insert(result, "subst:");
end;
table.insert(result, szablon);
if args then
for k, v in pairs(args) do
if (type(k)~="number")then
table.insert(result, "|");
table.insert(result, tostring(k));
table.insert(result, "=");
table.insert(result, mw.text.nowiki(v));
else
table.insert(result, "|");
table.insert(result, mw.text.nowiki(v));
end;
end;
end;
table.insert(result, mw.text.nowiki("}}"));
return table.concat(result);
end;
function p.KodSymbolicznySzablonu(nazwa,args,modyfikatory,jako_szablony)
local args=args or {};
local modyfikatory=modyfikatory or {};
----
local __metatablica=getmetatable(args);
local result={};
table.insert(result,((jako_szablony) and "{{((}}" or "{{"));
for name,_ in pairs(modyfikatory)do
table.insert(result,name);
end;
table.insert(result,nazwa);
if(not __metatablica)then
for name,value in pairs(args)do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
value=mw.ustring.gsub(value,"[=]",((jako_szablony) and "{{=}}" or "="));
table.insert(result,name..((jako_szablony) and "{{=}}" or "=")..value);
end;
else
local tabelka_metatable=__metatablica.PobierzGeneralnaTablica(args);
local tab_inna_tabelka={};
local funkcja;
local juz_jest=nil;
for name,value in pairs(tabelka_metatable)do
if((juz_jest)or(name~=true))then
tab_inna_tabelka[value[2]]={name,value[1],value[3],};
else
funkcja=value;
juz_jest=true;
end;
end;
if(funkcja)then
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
if(jako_szablony)then
funkcja=mw.ustring.gsub(funkcja,"=",function(znak)
return "{{=}}";
end);
end;
table.insert(result,funkcja);
end;
for _,value in ipairs(tab_inna_tabelka)do
table.insert(result,((jako_szablony) and "{{!}}" or "|"));
local value_2;
if(jako_szablony)then value_2=mw.ustring.gsub(value[2],"[=]","{{=}}");else value_2=value[2];end;
table.insert(result,((not value[3])and(value[1]..((jako_szablony) and "{{=}}" or "=")) or "")..value_2);
end;
end;
table.insert(result,((jako_szablony) and "{{))}}" or "}}"));
return table.concat(result,"");
end;
function p.KodSymbolicznySzablonowejRamkiLuaInstrukcjiWarunkowejLubTagu(szablon)
szablon=mw.ustring.gsub(szablon,"^{{(.-)}}$",function(zawartosc)
zawartosc=mw.ustring.gsub(zawartosc,"[|=]",function(znak)
if(znak=="|")then return "{{!}}";else return "{{=}}";end;
end);
return "{((}}"..zawartosc.."{{))}}";
end);
return szablon;
end;
function p.NazwaSzablonu(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local nazwa=PobierzParametr(1) or PobierzParametr("nazwa");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](nazwa);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np")
if(nazwa_przestrzeni==nazwy_np_modul.Template)then
return nazwy_modul["NAZWASTRONY"](nazwa);
elseif(nazwa_przestrzeni==nazwy_np_modul.Main)then
return ":"..nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
else
return nazwy_modul["PEŁNANAZWASTRONY"](nazwa);
end;
end;
function p.ZnacznikoweTrueFalseSzeregZnakowy(yes)
local yes_male=mw.ustring.lower(yes);
return ((yes_male=="true") and true or ((yes_male~="false")and yes or false));
end;
local function WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,liczba_obiektu)
local liczba_obiektu=liczba_obiektu or 100;
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(tablica_danych_parametrow_szablonu_strony_numer)then
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod)then
return tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika,tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika;
end;
end;
end
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
if(not tablica_analizy_obiektow_strony_dany_modul)then
tablica_analizy_obiektow_strony_dany_modul={};
znacznik,tablica_analizy_obiektow_strony_dany_modul=szablonowe_potrzebne_modul.KodowanieAtrybutoweZnacznikowe(znacznik,tablica_analizy_obiektow_strony_dany_modul);
end;
local html_modul=require("Module:Html");
znacznik=html_modul.TekstoweZnakiTypowoTagoweParametroweZamienianiaNaKodHtml(znacznik);
znacznik=mw.ustring.gsub(znacznik,"(</[%a%d]+)(%s+[^<>]*)(>)%s*$","%1%3");
local nazwa,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*>(.-)</(%1)%s*>%s*$");
if((nazwa)and(zawartosc))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),zawartosc,nil;
end;
----
local nazwa=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s*/?%s*>%s*$");
if(nazwa)then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return mw.ustring.lower(nazwa),nil,nil;
end;
----
local nazwa,atrybuty,zawartosc=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*>(.-)</([%a%d]+)%s*>%s*$");
----
if((not nazwa)or(not atrybuty)or(not zawartosc))then
nazwa,atrybuty=mw.ustring.match(znacznik,"^%s*<([%a%d]+)%s+([^<>]-)%s*/?%s*>%s*$");
if((not nazwa)or(not atrybuty))then
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=nil;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=nil;
end;
return nil,nil,nil;
end;
end;
-----
local techniczne_modul=require("Module:Techniczne");
local tab_atrybuty=szablonowe_potrzebne_modul.AtrybutyZnacznika(atrybuty,tablica_analizy_obiektow_strony_dany_modul);
if((tablica_danych_parametrow_szablonu_strony)and(kod))then
if(not tablica_danych_parametrow_szablonu_strony[liczba_obiektu])then tablica_danych_parametrow_szablonu_strony[liczba_obiektu]={};end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[liczba_obiektu];
if(not tablica_danych_parametrow_szablonu_strony_numer[kod])then tablica_danych_parametrow_szablonu_strony_numer[kod]={};end;
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer[kod];
tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_znacznika=nazwa;
tablica_danych_parametrow_szablonu_strony_numer_kod.istota_znacznika=zawartosc;
tablica_danych_parametrow_szablonu_strony_numer_kod.atrybuty_znacznika=tab_atrybuty;
end;
return mw.ustring.lower(nazwa),zawartosc,tab_atrybuty;
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,100);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguMath(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,101);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguPre(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,102);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguSyntaxHighLight(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,103);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguNowiki(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,104);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguGallery(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,105);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguImageMap(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,106);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguInputBox(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,107);
end;
function p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeTaguQuiz(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod)
return WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeFormZnacznikowych(znacznik,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod,108);
end;
function p.KodSymbolicznyTagu(nazwa,zawartosc,atrybuty,jako_szablony)
local tab_str={};
table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<");
table.insert(tab_str,nazwa);
if(atrybuty)then
local parametry_modul=require("Module:Parametry");
for name,value in pairs(atrybuty)do
table.insert(tab_str," ");
table.insert(tab_str,name);
table.insert(tab_str,jako_szablony and "{{=}}","=");
if(parametry_modul.TypeString(value))then
table.insert(tab_str,"\""..value.."\"");
else
table.insert(tab_str,tostring(value));
end;
end;
end;
table.insert(tab_str,jako_szablony and "{{Większy}}" or ">");
table.insert(tab_str,zawartosc or "");
table.insert(tab_str,jako_szablony and "{{Mniejszy}}" or "<");
table.insert(tab_str,"/");
table.insert(tab_str,name);
table.insert(tab_str,jako_szablony and "{{Większy}}" or ">");
return table.concat(tab_str,"");
end;
function p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,__FUNKCJA1,__FUNKCJA2,__FUNKCJA3,__FUNKCJA4,__FUNKCJA5,__FUNKCJA6,__FUNKCJA7,__FUNKCJA8,__FUNKCJA9,__FUNKCJA_domyslna,__FUNKCJA_begin,__FUNKCJA_parsowania,__FUNKCJA_parametry,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,trimuj_numerowane)
----
local wynik=__FUNKCJA_begin and __FUNKCJA_begin(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa) or nil;
if(wynik)then return nil;end;
local tablica_danych_parametrow_szablonu_strony_numer=kod and tablica_danych_parametrow_szablonu_strony and tablica_danych_parametrow_szablonu_strony[1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
local tab_pop=tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.nazwa_szablonu;
--and tablica_danych_parametrow_szablonu_strony_numer_kod.parametry;
----
local tabela_parametrow_szablonu;local nazwa_szablonu;local tabela_modyfikatorow;
local parametry_modul=require("Module:Parametry");
if((not __FUNKCJA_parsowania) or ((__FUNKCJA_parsowania)and(__FUNKCJA_parsowania(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa))))then
tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow=p["ParsowanieWywołaniaSzablonu"](szablon,trimuj_numerowane,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
else
nazwa_szablonu,tabela_modyfikatorow=p["NazwaSzablonuWywołania"](szablon,__FUNKCJA_nazwa1,__FUNKCJA_nazwa2,tablica_danych_parametrow_szablonu_strony,kod);
tabela_parametrow_szablonu=(not __FUNKCJA_parametry) and true or __FUNKCJA_parametry(szablon,"SZABLON",kod,tablica_danych_parametrow_szablonu_strony,pelna_nazwa_spisu_tresci_szablonowa);
end;
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu,tablica_danych_parametrow_szablonu_strony,kod))then
----
if(__FUNKCJA7 and __FUNKCJA7(nazwa_szablonu) or ((not __FUNKCJA7) and true or false))then
if(__FUNKCJA1 or __FUNKCJA_domyslna)then
local techniczne_modul=require("Module:Techniczne");
if(not tab_pop)then
if((kod)and(tablica_danych_parametrow_szablonu_strony))then
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[-1];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.adres_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
local tablica_danych_parametrow_szablonu_strony_numer=tablica_danych_parametrow_szablonu_strony[3];
local tablica_danych_parametrow_szablonu_strony_numer_kod=tablica_danych_parametrow_szablonu_strony_numer
and tablica_danych_parametrow_szablonu_strony_numer[kod];
if(tablica_danych_parametrow_szablonu_strony_numer_kod
and tablica_danych_parametrow_szablonu_strony_numer_kod.szablonowa_nazwa_strony
)then
tablica_danych_parametrow_szablonu_strony_numer[kod]=nil;
end;
end;
end;
nazwa_szablonu=pelna_nazwa_spisu_tresci_szablonowa and techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]({[1]=nazwa_szablonu,[2]=pelna_nazwa_spisu_tresci_szablonowa,},tablica_danych_parametrow_szablonu_strony,kod) or nazwa_szablonu;
nazwa_szablonu=p["SzablonowaNazwaStrony"](nazwa_szablonu,tablica_danych_parametrow_szablonu_strony,kod);
if(__FUNKCJA1)then
return __FUNKCJA1(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
else
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA8)then
return __FUNKCJA8(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(p.CzyModyfikatoryInstrukcjiWarunkowychSzablonowych(tabela_modyfikatorow,nazwa_szablonu,tabela_parametrow_szablonu))then
if(__FUNKCJA2)then
return __FUNKCJA2(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow)then
if(tabela_modyfikatorow["#invoke:"])then
if(__FUNKCJA3)then
return __FUNKCJA3(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
elseif(tabela_modyfikatorow["#tag:"])then
if(__FUNKCJA4)then
nazwa_szablonu=mw.getContentLanguage():lc(nazwa_szablonu);
return __FUNKCJA4(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
local czy_sa_takie_funkcje=(__FUNKCJA5 and __FUNKCJA6) and true or nil;
if(czy_sa_takie_funkcje)then
local function CzyTenSzablonToParser(tabela_modyfikatorow)
for name,value in pairs(tabela_modyfikatorow)do
if(mw.ustring.match(name,"^#%a+:$"))then
return true;
end;
end;
return false;
end;
if(CzyTenSzablonToParser(tabela_modyfikatorow))then
if(__FUNKCJA5)then
return __FUNKCJA5(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
else
if(__FUNKCJA6)then
return __FUNKCJA6(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
else
if(__FUNKCJA9)then
return __FUNKCJA9(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
elseif(__FUNKCJA_domyslna)then
return __FUNKCJA_domyslna(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,"SZABLON",kod);
end;
end;
end;
p["SprawdzanieCzyWystępujeDanySzablonWTekście"]=function(frame)
local parametry_modul=require("Module:Parametry");
local PobierzParametr=parametry_modul.PobierzParametr(frame);
local tekst=PobierzParametr(1) or PobierzParametr("tekst");
local pattern=PobierzParametr(2) or PobierzParametr("wzór");
local szablon=PobierzParametr(3) or PobierzParametr("szablon");
local czy_z_parametrami=PobierzParametr(4) or PobierzParametr("z parametrami");
----
local parametry_modul=require("Module:Parametry");
czy_z_parametrami=((parametry_modul.TypeTable(czy_z_parametrami))
and czy_z_parametrami
or (((not parametry_modul.TypeString(czy_z_parametrami))
and(not parametry_modul.TypeNil(czy_z_parametrami))
and(not parametry_modul.TypeBoolean(czy_z_parametrami)))
and czy_z_parametrami
or (parametry_modul.CzyTak(czy_z_parametrami) and true or false)
)
);
----
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
----
local iter=mw.ustring.gmatch(tekst,pattern);
for nazwa_szablonowa in iter do
local czy_szablon,tabela_modyfikatorow=p["UstalanieNazwyWywołania"](nazwa_szablonowa);
local nazwa_szablonu=p["SzablonowaNazwaStrony"](czy_szablon);
if(p.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow,nazwa_szablonu,czy_z_parametrami))then
if(nazwa_szablonu==szablon)then
return "tak";
end;
end;
end;
return nil;
end;
return p;
1o2dkpj83erx4emzlgmqgxb4kij9tur
Wikibooks:Moduły/StronicowyParser/Rozdziały
4
63521
546489
544377
2026-06-12T06:55:55Z
Persino
2851
/* {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} */
546489
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli to jest fałszywa, to zwracany jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code||linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}} - parametry nazw,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prosstu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
qukze5xqfeo0n7sna4tergcy4430ffv
546490
546489
2026-06-12T06:57:17Z
Persino
2851
/* {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} */
546490
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli to jest fałszywa, to zwracany jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code||linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}} - parametry nazw,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prosstu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jjsztw26cwui66s5u8iv6ecp1il79h2
546491
546490
2026-06-12T06:58:54Z
Persino
2851
/* {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} */
546491
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli to jest fałszywa, to zwracany jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}} - parametry nazw,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prosstu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1l4pto8dgstgqp3d7gs7b4cgoi76nvn
546492
546491
2026-06-12T07:01:46Z
Persino
2851
/* {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} */
546492
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli to jest fałszywa, to zwracany jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prosstu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3l98usca8alrkiwmhis6ccbq9c79otq
546493
546492
2026-06-12T07:03:39Z
Persino
2851
/* {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} */
546493
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prosstu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
04jsabcii5prvpqrv9g52nvj26w3gxu
546494
546493
2026-06-12T07:06:44Z
Persino
2851
/* Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały */
546494
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mijel2tr5urwpmqb89py900ph2b6mia
546495
546494
2026-06-12T07:13:02Z
Persino
2851
/* Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały */
546495
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtekst|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtekst|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtekst|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtekst|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtekst|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
azjhi65svtg2xz1rkfs650u13420pvu
546496
546495
2026-06-12T07:14:14Z
Persino
2851
/* Funkcje lokalne */
546496
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|frame:preprocess}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ghusor61lji2dw1uyqyogtytgj7t2bs
546497
546496
2026-06-12T07:16:34Z
Persino
2851
/* {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} */
546497
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
r93hk4vy6wq7e2qoxo7veygfadxdn7n
546498
546497
2026-06-12T07:17:56Z
Persino
2851
/* {{Code|p.NumerSekcjiStrony}} */
546498
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
n7udmsaiuz13l1wpivr0d8np1b92enp
546499
546498
2026-06-12T07:20:14Z
Persino
2851
/* {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} */
546499
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|mw.title.makeTitle}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
tr6qqgr0hixlx8vrxmufksyyok9hrh8
546500
546499
2026-06-12T07:21:15Z
Persino
2851
/* {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} */
546500
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
34fkeqlk2b1kah8ciamchsoiro3hnlo
546501
546500
2026-06-12T07:47:27Z
Persino
2851
/* {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} */
546501
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do {{Code|<nowiki>^%u[%u%s]*$</nowiki>}}, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2tweyjdi3tmw7te36abev6t1husp7x5
546502
546501
2026-06-12T07:48:57Z
Persino
2851
/* {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} */
546502
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
mpe0ohxjpz5dq1klqbeb9quxsmlyc2x
546503
546502
2026-06-12T07:57:01Z
Persino
2851
546503
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1t8f3rxg0cqe9u7bsj2h7b1bj8czsyz
546504
546503
2026-06-12T07:58:43Z
Persino
2851
/* {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} */
546504
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ckjl6afm0g3jfjitirjgb47st2cyxbs
546505
546504
2026-06-12T08:03:38Z
Persino
2851
/* Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe */
546505
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
slu6cb768k613z592j4pyl7rrcnbg9e
546506
546505
2026-06-12T08:16:42Z
Persino
2851
/* {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} */
546506
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lkx5wpdwo313sub8zzrw2uac143szha
546507
546506
2026-06-12T08:17:45Z
Persino
2851
/* Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały */
546507
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
2i5c813i7etdh2o6jj5vt89dflem3nu
546508
546507
2026-06-12T08:31:26Z
Persino
2851
/* {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} */
546508
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
32a3qrdfbokgm31d0wzon07eaa3elsr
546509
546508
2026-06-12T08:36:36Z
Persino
2851
/* {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} */
546509
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
op60slnx991qs6i09z6ieyjlkju0529
546510
546509
2026-06-12T08:39:00Z
Persino
2851
/* {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} */
546510
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
abe1f97ykkm5oh9a4tjgbk7wfxs4uu9
546511
546510
2026-06-12T08:39:46Z
Persino
2851
/* Funkcje lokalne */
546511
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
==== Dalszy opis funkcji ====
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
de2coatmcyyn058bqluc5tlxrbetq21
546512
546511
2026-06-12T09:24:05Z
Persino
2851
/* Dalszy opis funkcji */
546512
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
==== Dalszy opis funkcji ====
Funkcja ma w sobie zwracany iterator,który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst.
Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami.
Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjaalne}}}}, dalej są usuwane odstępu z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu.
W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są róne ciągowi pustemu.
W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne.
Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków.
Jeżeli zusyakny rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
my18z9su1gwu7j8my4slaj3gitjqmdh
546513
546512
2026-06-12T10:24:32Z
Persino
2851
/* Dalszy opis funkcji */
546513
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
==== Dalszy opis funkcji ====
Funkcja ma w sobie zwracany iterator,który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst.
Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami.
Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjaalne}}}}, dalej są usuwane odstępu z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu.
W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu.
W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne.
Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków.
Jeżeli zusyakny rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji.
{{Hr}}
Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} zpierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza.
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}.
Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}.
Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}.
Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
kp0mw4hniyj8q2oh0h5575hyh54yo5k
546514
546513
2026-06-12T10:27:20Z
Persino
2851
/* Dalszy opis funkcji */
546514
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
==== Dalszy opis funkcji ====
Funkcja ma w sobie zwracany iterator,który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst.
Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami.
Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjaalne}}}}, dalej są usuwane odstępu z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu.
W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu.
W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne.
Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków.
Jeżeli zusyakny rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji.
{{Hr}}
Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} zpierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza.
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}.
Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}.
Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}.
Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7uxs6vdypqeoi3n36d2ptbcscbao6mu
546518
546514
2026-06-12T10:58:38Z
Persino
2851
/* Dalszy opis funkcji */
546518
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== Wstęp ==
Poniższe funkcje służą do analizowania stron spisu treści, aby przygotować je do analizowania przez moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
=== Rozdziały ===
* Dodatnie - dzielimy je na normalne i inne, a te na rozdziały centrowane znacznikowe i centrowane:
** normalne (równaniowe) - to są rozdziały napisane za pomocą znaku {{Code|{{=}}}}, które po prawej i lewej stronie znajduje się tych znaków minimalnie taka sama liczba, a pomiędzy nimi jest zwykły tekst, i nie tylko, są to rozdziały typu, np.: {{Code|<nowiki>== Tekst rozdziału ==</nowiki>}},
** Inne (nierównaniowe):
*** Rozdziały centrowane znacznikowe - są to rozdziały dodatnie napisane za pomocą znacznika: {{Tag|center}}, przykład: {{Tag|center|zawartość=Tekst rozdziału}},
*** Rozdziały centrowane szablonowe - są to rozdziały dodatnie napisane przy pomocy jednego szablonu z: {{s|Center}}, {{s|Centruj}} lub {{s|Ce}}, przykład: {{Code|{{s|Center|Tekst rozdziału}}}},
* Ujemne - to są listy w liniach zaczynających się od znaku: {{Code|<nowiki>[;%*:#]</nowiki>}}, nie mogą być to znaczniki list, za tymi znakami znajduje się zwykły tekst, i nie tylko, są to rozdziały typu: {{Code|<nowiki>:** Tekst rozdziału</nowiki>}},
* Zerowe - to są rozdziały nie będące ani dodatnie, czy ujemne, ale nie wszystkie takie są zerowe, to zależy od pewnych kryteriów ustalanych przez funkcję: {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}}, są to rozdziały typu: {{Code|Tekst rozdziału:}}.
=== Zmienne spotykane w opisywanych tutaj funkcjach ===
==== Zmienne bazy ====
W poniższych funkcjach często spotykamy parametry:
* {{Code|tekst}} {{Patrz|tekst}} (cały tekst), {{Code|linia}} {{Patrz|linia}} (linia w tekście) - tekst zakodowany funkcją kodującą, mogący być modyfikowany przez inne funkcje,
* {{Code|szablon}} {{Patrz|szablon}} - zakodowany tekst szablonu, jak w: {{LinkPatrz|tekst}}, tym szablonem może być też nie tylko normalnie szablon, ale może być to jakikolwiek instrukcja warunkowa wikikodu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{Patrz|pelna_nazwa_spisu_tresci_szablonowa}} - pełna nazwa strony jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} - tabela parametrów szablonu,
* {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} - nazwa szablonu,
* {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} - tabela jego modyfikatorów.
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
* {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} - nazwa modułu (uchwyt) używana zamiast tabeli bazy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, jeżeli taki istnieje w bazie wewnętrznym funkcji: {{Code|{{m|Szablonowe}}}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
===== Inne elementy bazy =====
* {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} - tabela potrzebna do rozważań dla funkcji: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}, mówiąca coś o przekierowaniach, aby nie liczyć pewnych parametrów od począdku.
==== Funkcje bazy danych i do nich parametrów ====
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - fukcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
==== Inne funkcje ====
===== Funkcje bazy =====
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} - służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
* {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} - funkcja służąca do kodowania i modyfikowania tekstu, zastępując w nim elementy ich kodami, tworząc tablicę kodów: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, którego elementu można rozkładać i umieszczać w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} - sprawdzająca, czy w kodzie są kody (czy tekst jest zakodowany), tzn. czy są kody o jakikolwiek {{Code|obiekt}} {{LinkPatrz|obiekt}} (typ obiektu kodu) i {{Code|kod}} {{LinkPatrz|kod}} (o liczbie całkowitej dodatniej).
===== Inne =====
* {{Code|{{sr|p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} - funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
==== Elementy bazy ====
* {{Code|obiekt}} {{Patrz|obiekt}} - parametr, w postaci łańcucha znakowego typu elementu w kodzie,
* {{Code|kod}} {{Patrz|kod}} - numer tego elementu o danym typie {{LinkPatrz|obiekt}}. Te numery mogą mieć przerwy, możliwie zaczynające się od jedynki, ale nigdy od zera, dla kodów tego samego typu, bo za pomocą innych funkcji można skasować to z jedynką lub elementy powodujące przerwy, te operacje są według {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
==== Inne zmienne ====
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} - te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
* {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} - nazwa artykułu spisu treści.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, do usuwania elementów tabeli parametrów ===
Funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}}, często ją się definiuje:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
local __FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE=function(szablon,obiekt,kod,poziom_iteracji)
local tab_obiekt=tab_analiza[obiekt];
if(not tab_obiekt)then return;end;
for _,wartosc in pairs(tab_obiekt)do
local element_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(element_wartosc)then
element_wartosc[kod]=nil;
end;
end;
end;
</syntaxhighlight>
Ta funkcja usuwa elementy tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}, które są reprezentowane przez element liczbowy {{Code|kod}} {{LinkPatrz|kod}}.
=== Przykładowy kod funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, do usuwania elementów tabeli bazy ===
A funkcję: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}, można zdefiniować, usuwając z tablicy wielowymiarowej jeden element reprezentowany przez dwie zmienne:
<syntaxhighlight lang="lua">
local __FUNKCJA_OPERACJE_USUWANIE_BAZOWE=function(szablon,obiekt,kod,poziom_iteracji)
tablica_analizy_obiektow_strony_dany_modul[obiekt][kod]=nil;
end;
</syntaxhighlight>
Przy tej funkcji należy uważać, aby nie wywołać błędu języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, jakby element {{Code|obiekt}} {{LinkPatrz|obiekt}} nie istniał w tabeli.
Ta funkcja usuwa elementy z tablicy: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}, które są reprezentowane przez zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}.
== {{Code|p.NapisWprowadzeniaTekstu}} ==
Funkcja tworzy nagłówek rozdziału. Dla poziomu większego niż zero, ale mniejszego niż sieden zwraca nagłówek, np.: {{Code|{{=}}{{=}} Nagłówek tekstu {{=}}{{=}}}}, a dla większego niż sześć kreuje je jako, np.: {{Code|<nowiki><h6 class=\"mw-hnumber mw-hnumber-7">Nagłówek tekstu</h6></nowiki>}}. Gdy {{Code|0 < poziom <{{=}} 6}} tworzony jest taki nagłówek, że z lewej i prawej strony jest tyle minimalnie równa się, ile wskazuje poziom. A dla większego niż sześć tworzony jest nagłówek za pomocą znacznika {{Code|<nowiki><h6></nowiki>}} z klasą ogólną {{Code|mw-hnumber}} plus {{Code|mw-hnumber-<poziom>}}, gdzie {{Code|<poziom>}}, to numer danego poziomu. A więc funkcja pozwala tworzyć nagłówki o dowolnym poziomie większym niż zero, o ile {{lpg|Lua}} w {{lpr|Lua|Scribunto}} na to pozwoli, ze strony swoich ograniczeń.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstu(rozdzial,poziom)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial}} - tekst wnętrza rozdziału,
* {{Code|poziom}} - numer całkowity dodatni poziomu.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial="Tekst rozdziału";
local napis_rozdzialu1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,4);
local napis_rozdzialu2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstu(rozdzial,8);
</syntaxhighlight>
Wyniki użycia w zmiennych:
<syntaxhighlight lang="lua">
local napis_rozdzialu1="\n====Tekst rozdziału====\n";
local napis_rozdzialu2="\n<h6 class=\"mw-hnumber mw-hnumber-8\">Tekst rozdziału</h6>\n";
</syntaxhighlight>
== {{Code|p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego}} ==
Funkcja sprawdzająca, czy we podanym rozdziale, dodatnim lub ujemnym, o pewnym formacie, który musi istnieć, jako format szablonu {{s|HNumer}}, czy istnieje w nim element (obiekt), w postaci zakodowanej, o kodzie: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, który nie zawiera w sobie żadnej nowej linii, a jak nie zawiera, to czy ten element jest bezpośrednio elementem rozdziału napisanego wewnątrz tego szablonu.
Defnicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KodZnacznikaWeNapisieWprowadzeniaTekstuDodatniegoAlboUjemnego(tekst,zawartosc,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt}} i {{Code|kod}} {{LinkPatrz|kod}}, aby wykorzystać ta metodę.
Przykłady użycia, używając omawianego szablonu:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Oto jest tekst <span class="plainlinks">Zawartość znacznika</span> ===}}
{{HNumer|1= * Oto jest tekst <span class="plainlinks">Zawartość znacznika</span>}}
</syntaxhighlight>
Zmienną {{Code|tekst}} w nich kolejno, które należy zakodować odpowiednio właściwą funkcją, aby otrzymać odpowiednio ich wersje zakodowane, tej zmiennej, aby móc operować tą funkcją, w przeciwnym wypadku tej funkcji nie ma sensu używać, bo otrzymamy nieprzewidywalne skutki:
<syntaxhighlight lang="lua">
local tekst="=== Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span> ===";
local tekst="* Oto jest tekst <span class=\"plainlinks\">Zawartość znacznika</span>";
</syntaxhighlight>
A {{Code|zawartosc}} kolejno, która mieści się w wersji zakodowanej zmiennej {{Code|tekst}} (tutaj mamy wersje jego niezakodowaną):
<syntaxhighlight lang="lua">
local zawartosc="Zawartość znacznika";
local zawartosc="Zawartość znacznika";
</syntaxhighlight>
W obu przykładach szablon zwraca wartość: {{Code|true}} (bo w tej ostatniej zmiennej nie ma nowej linii), pod warunkiem, że znacznik: {{Code|<nowiki><span class="plainlinks">Zawartość znacznika</span></nowiki>}}, jest zakodowany w zmiennej {{Code|tekst}}, i jest częścią zmiennej tej wersji, co jest uwidocznione kodem, według dwóch kolejnych sprawdzeń wykluczających się:
<syntaxhighlight lang="lua">
if(mw.ustring.match(tekst,"\n=+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*=+[^%S\n]*\n"))then return true;end;
if(mw.ustring.match(tekst,"\n[:#%*;]+[^\n]*"..kod_norma_wzoru_obiektu.."[^\n]*\n"))then return true;end;
</syntaxhighlight>
Widzimy, że ten znacznik musi leżeć bezpośrednio w zakodowanym tekście (to musi być zakodowane, bo w przeciwnym wypadku nie ma o czym mówić).
== {{Code|p.NapisWprowadzeniaTekstuHNumer}} ==
Generuje napis wprowadzenia tekstu według szablonu {{s|HNumer}}, w którym parametrach szablonów jest równaniowy nagłówek. Szablon dla {{Code|0 < poziom <{{=}} 6}} poziomów, np.: {{Code|{{=}}{{=}} Nagłówek Tekstu {{=}}{{=}}}}, podaje poziom napisu wprowadzenia tekstu przy pomocy funkcji: {{Code|{{sr|#p.PodajNapisPoziomuWprowadzeniaTekstu}}}}, i go zamienia na znaczniki od: {{Code|<nowiki><h1></nowiki>}} do {{Code|<nowiki><h6></nowiki>}}, a dla {{Code|poziom > 6}}, tworzy inny nagłówek, dla {{Code|<nowiki>======== Nagłówek tekstu ========</nowiki>}}, tworzy: {{Code|<nowiki><h6 class="mw-hnumber mw-hnumber-8">Nagłówek tekstu</h6></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NapisWprowadzeniaTekstuHNumer(parametr)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|parametr}} - napisz wprowadzenia tekstu dodatni, czyli napisany za pomocą znaku {{Code|{{=}}}}, rozdziały napisane za pomocą list, tzn. napisane tak by zaczynały się od: {{Code|<nowiki>#*:;</nowiki>}}, odpadają, inne listy znacznikowe też.
Przykłady użycia reprezentujące dwa rozłączne formy przedstawiające nagłówki, napisane tym samym sposobem:
<syntaxhighlight lang="mediawiki">
{{HNumer|1= === Nagłówek tekstu ===}}
{{HNumer|1= ======= Nagłówek tekstu =======}}
</syntaxhighlight>
Wtedy wywołania funkcyjne, a w nich parametr {{Code|parametr}} można zdefiniować dwóch w zmiennych, one są przetwarzane na odpowiednie nagłówki, ten parametr może być zakodowany, ale nie musi tak być, tak otrzymany nagłówek, równie dobrze możemy zakodować, a otrzymany tekst, aby przygotować do dalszej analizy przez inne funkcje, czy metody:
<syntaxhighlight lang="lua">
---- Nagłówki typowo dodatnie
local tekst1="=== Nagłówek tekstu ===";
local tekst2="======= Nagłówek tekstu =======";
---- Wywołania tworzące nagłówki
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local naglowek1=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst1);
local naglowek2=stronicowyparser_rozdzialy_modul.NapisWprowadzeniaTekstuHNumer(tekst2);
</syntaxhighlight>
Funkcja zamienia to kolejno je na standardowe nagłówki {{Strong|HTML}}, które reprezentują nagłówko o dowolnym poziomie, tutaj dla: {{Code|poziom > 6}}, też można tak zrobić poprzez osobne dwie klasy, tzn. klasę ogólną: {{Code|mw-hnumber}}, i szczególną: {{Code|mw-hnumber-<liczba>}}:
<syntaxhighlight lang="lua">
local naglowek1="<h3>Nagłówek tekstu</h3>";
local naglowek2="<h6 class=\"mw-hnumber mw-hnumber-8\">Nagłówek tekstu</h6>";
</syntaxhighlight>
== {{Code|p.PodajNapisPoziomuWprowadzeniaTekstu}} ==
Szablon na podstawie dowolnego nagłówka dodatniego równaniowego, tzn. o poziomie o dobrowolnej liczbie, tzn. jego poziom może być: {{Code|poziom > {{=}} 1}}, a nie {{Code|1 <{{=}} poziom <{{=}} 6 }}, równa się, czyli np.: {{Code|<nowiki>====== Tekst nagłówka ======</nowiki>}}, takie poziomy są jedynie interpretowalne przez {{Strong|MediaWiki}}, a ta funkcja również uwzględnia poziomy: {{Code|poziom > 6}}, czyli o liczbie {{Code|{{=}}}} z prawej i lewej strony nagłówka o większej liczbie niż sześć. Metoda podaje jego zawartość (nagłówek jest trimowany funkcją: {{Code|mw.text.trim}}) i poziom, jako dwa kolejne parametry zwracane, tzn. {{Code|naglowek, poziom}}, przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajNapisPoziomuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - parametr przedstawiający linię rozważanego tekstu, ona może być zakodowana,
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="====== Tekst nagłówka ======";
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Wynikiem działania tego przykładu:
<syntaxhighlight lang="lua">
local naglowek="Tekst nagłówka";
local poziom=6;
</syntaxhighlight>
Zawartością zmiennej wchodzącej do naszej funkcji musi być sciśle od poczatku do końca nagłówek o wspomnianym formacie.
== {{Code|p.PodajTekstHNumerNapisuWprowadzeniaTekstu}} ==
Szablon podaje zawartość nagłówka rozdziału od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, i jego poziom, czyli liczba stojąca przy {{Code|h}}, tzn, jak mamy {{Code|<nowiki><h5></nowiki>}}, to tą liczbą jest {{Code|5}}. W innych przypadkach szablon zwraca zamiast liczby wartość {{Code|nil}}, np. gdy tag znacznika końcący nagłówek nie zgadza się z tym rozpoczynającym, lub gdy liczba przy {{Code|h}} jest większa niż {{Code|6}}, czyli: {{Code|<nowiki><h7></nowiki>}}, albo gdy np. mamy: {{Code|<nowiki><h67></nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.PodajTekstHNumerNapisuWprowadzeniaTekstu(linia)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - linia rozważanego tekstu, w tekście musi mieścić się ten znacznik, choćby jeden, on nie musi się rozpoczynać na samym początku, a kończyć się na samym końcu, wnętrze jego najlepiej by było zakodowane, najlepiej, by był w nim to znacznik tylko jeden w samej linii zawarty bezpośrednio tam, aby on cały był jednocześnie tą linią.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local zawartosc,poziom=stronicowyparser_rozdzialy_modul.PodajTekstHNumerNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local zawartosc="Tekst nagłówka";
local poziom=5;
</syntaxhighlight>
== {{Code|p.CzyJestNapisWprowadzeniaTekstu}} ==
Funkcja podaje, czy w podanym tekście, jest jakikolwiek nagłówek dodatni, tzn. czy napisany za pomocą {{Code|{{=}}}}, tzn. np. {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, w zakodowanym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestNapisWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w którym zawarty jest jakikolwiek nagłówek, ono musi być zakodowane.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst\n== Tekst nagłówka == \n Oto jest dalszy tekst\n";
local napis_pierwszy_w_tekscie=stronicowyparser_rozdzialy_modul.CzyJestNapisWprowadzeniaTekstu(tekst);
</syntaxhighlight>
W powyższym tekście funkcja zwraca wartość równą pierwszemu wyszukiwanemu nagłówkowi, czyli:
<syntaxhighlight lang="lua">
local napis_pierwszy_w_tekscie="== Tekst nagłówka == ";
</syntaxhighlight>
Na podstawie tego wiadomo, że jakikolwiek taki nagłówek w tekście istnieje, gdyby nie było go tam wcale, to funkcja zwracałaby wartość: {{Code|nil}}.
== {{Code|p.CzyJestListaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy w tekście występuje nagłówek ujemny, czyli napis wprowadzenia tekstu, w postaci listy zaczynającej się od nowej linii: {{Code|<nowiki>[;%*:#]</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - tekst, w który ma znajdować napis wprowadzenia tekstu w postaci listy.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="Oto jest tekst\n:* Tekst nagłóka ujemnego\n";
local lista=stronicowyparser_rozdzialy_modul.CzyJestListaNapisuWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Funkcja zwraca wartość niepustą łańcuchową powiadamiającą, że taka lista istnieje, czyli w tym przypadku: {{Code|<nowiki>\n:*</nowiki>}}.
== {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} ==
Funkcja sprawdzająca, czy w tekście jest jakolwiek nagłówek podany w postaci równaniowej lub nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wiersz}} - czy w tekście jest wiersz z takim opisywanym nagłókiem.
Funkcja używa do sprawdzenia: {{Code|{{sr|#p.CzyJestNapisWprowadzeniaTekstu|b=tak}}}} (czy to jest rozdział dodatni) i {{Code|{{sr|#p.PodajTekstHNumerNapisuWprowadzeniaTekstu|b=tak}}}} (czy ujemny).
Przykłady funkcji:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst1="====== Tekst nagłówka ======";
local tekst2="<h5 class=\"plainlinks\">Tekst nagłówka</h5>";
local czy_jest_naglowek1,jaki_naglowek1=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst1);
local czy_jest_naglowek2,jaki_naglowek2=stronicowyparser_rozdzialy_modul.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(tekst2);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local czy_jest_naglowek1,jaki_naglowek1=true,true;
local czy_jest_naglowek2,jaki_naglowek2=true,false;
</syntaxhighlight>
== {{Code|p.WierszHNumer}} ==
Funkcja w nagłówkach od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, usuwa w nich nowe linie, zamieniając je po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) strony tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - parametr z tymi nagłówkami.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst<h2>Tekst nagłówka\nDalej Tekst nagłówka</h2> Tekst rozdziału\nDalszy tekst rozdziału <h3>Tekst nagłówka\nDalszy nagłówek</h3>";
local wynik=stronicowyparser_rozdzialy_modul.WierszHNumer(tekst);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local wynik="Oto jest tekst\n<h2>Tekst nagłówka Dalej Tekst nagłówka</h2>\n Tekst rozdziału\nDalszy tekst rozdziału \n<h3>Tekst nagłówka Dalszy nagłówek</h3>\n";
</syntaxhighlight>
== {{Code|p.CzyJestJakikolwiekLinkArtykularnyTekstu}} ==
Funkcja sprawdza na podstawie artykułu spisu treści, czy są w nim linki artykularne, które generują szablony, w postaci: {{s|SpisTreści}}, {{s|Sekcja referencyjna}} (lub jego skrót: {{s|Sr}}), {{s|Link wewnętrzny}} (lub jego skrót: {{s|Ly}}), {{s|LinkOgólne}} (lub jego skrót: {{s|Lo}}), czyli linki według tabeli {{Patrz|p.linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.linki_szablony_elementy_spisu_rzeczy={
["SpisTreści"]=true,
["Sekcja referencyjna"]=true,
["Sr"]=true,
["Link wewnętrzny"]=true,
["Ly"]=true,
["LinkOgólne"]=true,
["Lo"]=true,
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Albo inne generujące części spisu treści: {{s|SpisPozycja}} i {{s|SpisZw}}, na podstawie, które są elementami z {{Patrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}:
<syntaxhighlight lang="lua">
p.inne_linki_szablony_elementy_spisu_rzeczy={
["SpisPozycja"]={true,numer_link="tyt",},
["SpisZw"]={false,numer=1,link=2,},
};
</syntaxhighlight>
Tablica opisana w: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}}. Te tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
Bądź szablony linków inteligentnych. Ewentualnie ich skróty, artykułów sprawdzane przy pomocy funkcji: {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=StronicowyParser/Potrzebne}}}}, te szablony mieszczą się w kategorii: {{Code|{{lk2|Szablony linków inteligentnych}}}}, i ich skróty w: {{Code|{{lk2|Przekierowania skrótów do szablonów linków inteligentnych}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}},
* {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} - jednocześnie można powiedzieć, że on sprawdza, czy to jest link inteligentny.
Przykład użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Oto jest tekst {{lpg|Artykuł|Nazwa artykułu}}.\n Oto jest dalszy tekst. {{lu|Artykuł/Podstrona}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
local tablica_danych_parametrow_szablonu_strony={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestJakikolwiekLinkArtykularnyTekstu(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Powyższe wywołanie zwróci wynik {{Code|true}}. W niej tekst był kodowany przy pomocy funkcji: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, a póżniej był liczony wynik z dyskutowanej funkcji.
== {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} ==
Funkcja sprawdza, czy jest obiekt zakodowany o kodzie: {{Code|INNEPRE}}, {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|MATH}}, {{Code|GALERIA}} i {{Code|MAPAOBRAZU}}, a co oznaczają te kody to można zobaczyć w: {{sr|Szablonowe|dokumentacji modułu Szablonowe}}, wtedy funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku {{Code|false}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - tekst do policzenia, zawierające elementy z omawianymi kodami,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="\n Oto jest tekst z INNEPRE.\n<pre>Oto jest tekst z PRE</pre>\nOto jest dalszy tekst ze wzorem MATH: <MATH>c^2=a^2+b^2</MATH>.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local czy_tak_wynik=stronicowyparser_rozdzialy_modul.CzyJestInnySpecjalnyTekstowyObiekt(tekst,tablica_analizy_obiektow_strony_dany_modul);
</syntaxhighlight>
Funkcja zwraca wynik {{Code|true}}. Aby policzyć ten wynik należy wykorzystać funkcję kodującą: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}.
== {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach. Jest to funkcja skomplikowana analizująca, czy numeracja jest poprawna, czy nie, jeśli numeracja jest poprawna, to ona zwraca rozdział bez numeracji i samą numerację, a jeśli nie, to cały rozdział i numerację, będącą ciągiem pustym.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|rozdzial_z_numeracja}} - rozdzial z numeracją lub bez.
Zwracane wartości:
* {{Code|rozdzial}} - rozdzial bez numeracji,
* {{Code|numetracja}} - numeracja.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|z numeracją}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="5.1.2.3. Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="5.1.2.3.";
</syntaxhighlight>
; Drugi{{Dk}} {{Code|bez numeracji}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local rozdzial_z_numeracja="Napis Rozdziału";
local rozdzial,numeracja=stronicowyparser_rozdzialy_modul.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu(rozdzial_z_numeracja);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local rozdzial="Napis Rozdziału";
local numeracja="";
</syntaxhighlight>
== {{Code|p.__FUNKCJA_KOMPLETOWANIA}} ==
Funkcja kompletowania, sprawdza, czy nazwa szablonu jest jedna z wielu, tzn.: {{s|Kompletność}}, {{s|Kompletność krótka}}, {{s|Kompletność junior}} i {{s|Książka}}, wtedy zwraca wartość: {{Code|true}}, w przeciwnym wypadku: {{Code|nil}}, a tabela dzięki to wszystko się dzieje, przedstawia się w formie:
<syntaxhighlight lang="lua">
p.szablony_kompletowania_stron_woluminu={
["Kompletność"]=true,
["Kompletność krótka"]=true,
["Kompletność junior"]=true,
["Książka"]=true,
};
</syntaxhighlight>
Ta tabela mieści się w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_kompletowania_stron_woluminu|p=StronicowyParser/obiekty}}}}, wraz z innymi tabelami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.__FUNKCJA_KOMPLETOWANIA(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, potrzebny do poprzedniej tabeli.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa_szablonu="Kompletność krótka";
local czy_wynik=stronicowyparser_rozdzialy_modul.__FUNKCJA_KOMPLETOWANIA(nil,nazwa_szablonu,nil,nil,nil);
</syntaxhighlight>
Funkcja w tym przypadku zwróci wynik: {{Code|true}}, bo ta podana nazwa strony należy do naszej tabeli.
== {{Code|p.UruchamianieAnalizatoraSpisuRzeczyStrony}} ==
Funkcja zwraca wynik, czy uruchomić wydzielonie generowania spisu treści z całego jego pierwotnego. Szablon zwraca zawsze wartość {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UruchamianieAnalizatoraSpisuRzeczyStrony()...end;
</syntaxhighlight>
Funkcja nie przyjmuje żadnego parametru.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local czy_tak=stronicowyparser_rozdzialy_modul.UruchamianieAnalizatoraSpisuRzeczyStrony();
</syntaxhighlight>
Funkcja zwraca, jak zawsze wynik, wspomniany w nagłówku.
== {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy napis wprowadzenia tekstu, który nie jest dodatni, tzn. np.: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}} (czyli określony wzorem: {{Code|<nowiki>=+[^\n]*[^=]+[^\n]*=+[^%S\n]*</nowiki>}}), ani np.: linia opisywana formułą: {{Code|<nowiki>\n[:#%*;]+[^\n]*</nowiki>}}, zatem to jest przepis na definicję na tą funkcję, ale nie do końca, bo w tej funkcji pierwszy parametr nie może opisywać tego, ani tego. Funkcja zwraca dwa parametry, tzn. otrzymany rozdział i wartość: {{Code|true/false}}. Wartość {{Code|true}} mówi o rozdziale zerowym, a przeciwna wartość, że taki on nie jest. Także funkcja może zwracać wartość {{Code|nil}}, to determiniuje, że to nie jest rozdział wcale zerowy, czyli rozdział świadczący, że to jest zerowy, nie musi być wcale zerowy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyZerowyNapisWprowadzeniaTekstu(linia,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametr funkcji:
* {{Code|linia}} {{LinkPatrz|linia}} - rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
Do liczenia rozdziału spisu treści (rzeczy) funkcja wykorzystuje z modułu {{Code|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}}}: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}} - funkcja sprawdzająca {{Code|true/nil}}, czy w tekście znajduje się rozdział, który jest o nazwie typu: {{Code|Spis treści}} ({{Code|Spis rzeczy}}) - niezależnie jakimi literami napisany, ile tam jest odstępów, a do kompletowania (rozwijania) rozdziałów, służy do tego z {{Code|{{ld2|StronicowyParser/SpisTreści}}}}: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści}}}}.
Przykłady użycia (w przykładach przyjeliśmy najprostrzy wygląd tych rozdziałów, tzn. ich nie trzeba rozwijać i kompletować dalej, czyli wtedy ta funkcja jest ona w tym jedynie przypadku tożsamościowa):
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="Spis treści";
local tablica_analizy_obiektow_strony_dany_modul={};
---- Ta część kodu w tym przypadku jest opcjonalna, ze względu na niekodowalną zmienną: linia;
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
---- Koniec tej części kodu;
local tablica_danych_parametrow_szablonu_strony={};
local rozdzial,czy_tak=stronicowyparser_rozdzialy_modul.CzyZerowyNapisWprowadzeniaTekstu(linia,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Funckja w tym wypadku zwraca wynik:
<syntaxhighlight lang="lua">
local rozdzial,czy_tak="Spis treści",true;
</syntaxhighlight>
Weźmy inny przykład:
<syntaxhighlight lang="lua">
---- Przykład pierwszy;
local linia="'''Nagłówek'''";
local rozdzial,czy_tak="'''Nagłówek'''",true;
---- Przykład drugi;
local linia="'''Nagłówek'''.";
local rozdzial,czy_tak="'''Nagłówek'''.",false;
</syntaxhighlight>
== {{Code|p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu}} ==
Funkcja sprawdza, czy strona jest z przedrostkiem listy: {{Code|:}}, a dla tego, czy linia jest w cudzysłowach pojedyńczych podwójnych, a jeżeli to nie jest prawda, to funkcja zwraca wynik {{Code|false}}, normalnie przy braku parametru linkowego: {{LinkPatrz|z_parametrami_linkowymi}}, lub przy jej wartości fałszywej, funkcja zwraca wynik {{Code|true}}, w przeciwnym wypadku on rewiduje, czy w lini są artykuły aktualnej ksiązki, wtedy ona zwraca wynik {{Code|false}}, a jeżeli nie, to zwracany w przeciwnym wypadku jest wynik {{Code|true}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLinikamiNieWoluminu(przedrotek_listy,linia,z_parametrami_linkowymi,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} - przedrostek listy z linią {{Code|linia}},
* {{Code|linia}} {{LinkPatrz|linia}} - linia bez przedrostka,
* {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} - wartość {{Code|false}}, aby nie sprawdzał właśności artykularnych artykułów na linku, wtedy funkcja na samym końcu przy sprawdzedniu tego parametru,a jeżeli ta wartość, to wtedy otrzymany wynik z funkcji to {{Code|true}}, przeciwnym funkcja idzie dalej,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local linia="''[[Książka/Artykuł|Artykuł]]''";
local tablica_analizy_obiektow_strony_dany_modul={};
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local przedrotek_listy=":";
local tablica_danych_parametrow_szablonu_strony={};
local tab_nazwa_spisow_przekierowaniowych={};
---- Tutaj funkcja zwróci wartość: true;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,false,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
---- Tutaj funkcja zwróci wartość: false;
local czy_tak=stronicowyparser_rozdzialy_modul.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu(przedrotek_listy,linia,true,"","","Książka","","",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
</syntaxhighlight>
== {{Code|p.HnNumerWprowadzeniaTekstu}} ==
Funkcja zwraca numer poziomu nagłówka od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}. Jeśli poziom jest mniejszy niż 6, wtedy wynik zwracany tej funkcji jest liczbą stojącą przy {{Code|h}}. A gdy mamy {{Code|<nowiki><h6></nowiki>}}, jeżeli ten znacznik nie ma klasy ('''class''') atrybutu: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, to zwracane jest: 6, w przeciwnym wypadku daje to wynik, którym jest: {{Code|<liczba>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.HnNumerWprowadzeniaTekstu(nazwa,atrybuty)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa}} - nazwa tagu,
* {{Code|atrybuty}} - tabela atrybutów, których z jedną z elementów może być opcja: '''class'''.
Funkcja wykorzystuje podtablicę: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{Patrz|p.znaczniki_wprowadzenia_tekstu}}, tablicy transportu, którego link ma referencje do jej opisu, zdefiniowany w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, definicja jej jest w:
<syntaxhighlight lang="lua">
p.znaczniki_wprowadzenia_tekstu={
["h1"]=1,
["h2"]=2,
["h3"]=3,
["h4"]=4,
["h5"]=5,
["h6"]=6,
};
</syntaxhighlight>
Funkcja posługuje się jedynie na tych typach znaczników, a nie innych.
Przykłady użycia:
; Pierwszy{{Dk}} {{Code|poziom<6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h5";
local atrybuty={};
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja zwróci wynik: {{Code|5}}.
; Poziom{{Dk}} {{Code|poziom>{{=}}6}}{{Dk}}
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local nazwa="h6";
local atrybuty={};atrybuty["class"]="mw-hnumber-9";
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
</syntaxhighlight>
Funkcja daje wynik: {{Code|9}}.
== {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ==
Funkcja zwraca numerację i rozdział całego rozdziału. Jest to funkcja bardzo prosta ponieważ nie analizuje numeracji, czy jest poprawnie podana, czy nie. Zawartość rozdziału musi się składać z numeracji, składający się z numerków oddzielonych kropkami - tutaj też mogą być dwie kropki koło siebie, albo numeracja może składać się z samych kropek, chociaż to jest niepoprawne, ale tak może być, na końcu numeracji może być też krokpa, po nm znajduje się właściwy rozdział zawartości tej wielkiej zawartości (rozdziału). A gdy numeracja nie istnieje, to zamiast niego zwracaną wartością jest wartość pusta.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} - zawartość rozdziału.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local zawartosc="5.1.6. Rozdział";
local numeracja,rozdzial=stronicowyparser_rozdzialy_modul.NumeracjaOrazTekstWprowadzeniaTekstu(zawartosc);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local numeracja,rozdzial="5.1.6.","Rozdział";
</syntaxhighlight>
== {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} ==
Funkcja sprawdza, czy podany napis, nie dodatni, opisanym nie znakami {{Code|{{=}}}}. Ona bada linie list tzn. zaczynające się od linii znakami: {{Code|<nowiki>[;%*:#]</nowiki>}} (to są rozdziały ujemne), także rozważa też rozdziały zerowe (to nie są nagłówki typu {{Code|<nowiki>== Nagłówek==</nowiki>}}, ani ujemne). Funkcja zalicza do rozdziałów znaczniki utworzone ze znaczników od: {{Code|<nowiki><h1></nowiki>}}, do: {{Code|<nowiki><h6></nowiki>}}, też rozważa parametr w nim: {{Code|<nowiki>mw-hnumber-<liczba></nowiki>}}, wtedy poziom nie musi być od {{Code|1-6}}, ale też i: {{Code|> 6}}. Funkcja sprawdza, czy zaliczyć rozdziały centrowane (znacznikowe: znacznik {{Tag|center}}, i centrowane: {{s|ce}}, {{s|centruj}} i {{s|center}}) do rozdziałów, ona też potrafi odliczyć je od wykrywanych rozdziałów. Nie wyszystkie rozdziały ujemne (rozdziały listy) przez ten twór są przez niego uważane jako rozdziały, które trzeba zaliczyć, podobnie zerowe i centrowane.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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(linia,tak_ce_spis_tresci)
... ---- ciało funkcji zwracanej. Tutaj są sprawdzane, czy podane linie zaliczyć do rozdziałów. Zmienna: tak_ce_spis_tresci, to jest zmienna mówiąca, czy uwzględniać rozdziały centrowane.
return linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;---- Zwracane parametry tej funkcji;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} - czy ma uwzględniać rozdziały centrowane znacznikowe, czy szablonowe, podane pozyżej.
Parametry zwracane przez funkcję, zwracaną przez tą funkcję, opisuje daną linie, czy ją uważać za rozdział, któremu w innej funkcji niż ta można przyporządkować jej zawartość:
* {{Code|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} - nazwa rozdziału w opisanym linii rozdział, zwykle jest to ciało danego nagłówka, częśc tekstu po znakach listy następujące po sobie od początku linii,
* {{Code|poziom_rozdziału}} - poziom danego rozdziału podanego, jest ściśle zależna od tego, czy to jest rozdział centrowany, wtedy rozdział: {{Code|2}}, nagłówek, to liczba przy: {{Code|h}}, dla znaczników nagłówka, lub przy: {{Code|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} - numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi,
* {{Code|czy_rozdzial_centrowany}} - czy rozdział centrowany, jeśli centrowany to: {{Code|true}}, w przeciwny wypadku: {{Code|nil}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tablica_analizy_obiektow_strony_dany_modul={};
local linia="<h6>Nagłówek</h6>";
linia=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(linia,nil,tablica_analizy_obiektow_strony_dany_modul);
local tab_nazwa_spisow_przekierowaniowych={};
local nazwa_przestrzeni="";
local nazwa_przestrzeni_ksiazki="";
local nazwa_ksiazki="Książki";
local nazwa_spisu_tresci="";
local pelna_nazwa_spisu_tresci_szablonowa="";
local parser=stronicowyparser_rozdzialy_modul.ParserPodawaniaNapisuWprowadzeniaTekstu(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_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;
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Funkcja zwraca wyniki:
<syntaxhighlight lang="lua">
local linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany="'\"`UNIQ--ZNACZNIK-1-QINU`\"'","Nagłówek",6,nil,"",nil;
</syntaxhighlight>
=== Tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Przedstawione tutaj tablice są zdefiniowane w module: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a opisane w: {{Code|{{sr|StronicowyParser/obiekty}}}}.
==== {{Śródtytuł|Szablony centrowania}}Szablony centrowania ====
Funkcja wykorzystuje tabelę: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, o:
<syntaxhighlight lang="lua">
p.szablony_wprowadzenia_napisu_spisu_rzeczy={
["Ce"]=1,
["Centruj"]=1,
["Center"]=1,
};
</syntaxhighlight>
Z którego się dowiadujemy, z jakimi szablonami centrowania mamy do czynienia w tej funkcji, funkcja je wykrywa i ustawia, że dla tej linii z nim ją wykrył, niezależnie, jakie linki wewnątrz posiada.
==== Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe ====
Jeżeli w linii wykryto te szablony zamiast szablonów centrowania, to wiadomo, że ona nie stanowi rozdziału w liniach, które mają być rozdziałami ujemnymi lub zerowymi. Do tego celu służą linki zdfiniowane w tablicach, które są napisane w podrozdziałach poniżej.
===== Pierwszego typu - linki inteligentne =====
Następną tablicą: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}}.
===== Drugiego typu - szablony tworzenia spisu rzeczy =====
Tą tablicą jest: {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} jest z punktu: {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}, zawiera definicję znaczników różnych nagłówków, zdefiniowaną tam.
Są to znaczniki {{Strong|HTML}} o możliwych pozimach od: {{Code|1}} do {{Code|6}}, jakie ta funkcja ma wykrywać, żeby uznać tą linię za rozdział, niezależnie, jakie linki wewnątrz znacznika są zdefiniowane.
Poziomy większe od {{Code|6}} są jedynie możliwe za pomocą szablonu {{s|HNumer}}.
==== Rozdziały dodatnie centrowane znacznikowe i szablonowe, które uznać za nie rozdziały ====
Linie, które zostały uznane za rozdziały, można uznać, że takie nie są, jeżeli zawierają one szablony zdefiniowane w tablicy: {{Code|{{sr|#p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}:
<syntaxhighlight lang="lua">
p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego={
["Rozdział"]=true,
["Podrozdział"]=true,
["MapaObrazu"]=true,
};
</syntaxhighlight>
Rozdziały te, które zostały uznane za nierozdziały, powoduje to, że iterator tej funkcji wtedy dla ściśle określonej linii zwróci wartość {{Code|nil}}, a nie konkretne wartości, które by świadczyły o rozdziale centrowanym. Szablony centrowania szablonowego są zdefiniowane w: {{LinkŚródtytuł|Szablony centrowania}}, a znaczniki to są po prostu w postaci definicji: {{Tag|center}}.
==== Funkcje lokalne ====
===== {{Śródtytuł|LiniaCydzyslow}}{{Code|LiniaCydzyslow}} =====
Fukcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, przeciwnie, jeżeli rozdział pasuje do tego, że on składa się z samych liter dużych z możliwymi odstępami, oraz w rozdziale można wyróżnić pojedyńcze litery duże, lub ta duża pojedyncza znajduje sie na początku rozdziału, bądź na jej końcu, wtedy funkcja zwraca wartość odpowiadające fałszywej, w przeciwnym wypadku prawdziwej.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy nie dało się wykluczyć nieodpowiednich norm szablonowych, w przeciwnym wypadku {{Code|nil}}, właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiekcie: {{Code|GALERIA}}, {{Code|ŹRÓDŁO}}, {{Code|PRE}}, {{Code|INNEPRE}}, {{Code|WIKITABELA}} lub {{Code|MAPAOBRAZU}}, albo on jest szablonem normalnym o obiekcie: {{Code|SZABLON}}, które pasują o nazwach szablonów będących w: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}, o tych właśnie kluczach.
===== {{Śródtytuł|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}}{{Code|FunkcjaSzablonowaRewidowaniaWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania napisu wprowadzenia tekstu, funkcja dopuszcza rozdziały typu: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem) i {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), wtedy zwraca {{Code|nil}}.
Funkcja liczy rozdział i numerację z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}, a jeżeli tak z policzonego rozdziału udało się wykluczyć go przy pomocy funkcji: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, wtedy numeracja i rozdział są przyrównywane do wartości {{Code|nil}}, przeciwnie pozostawia je policzone przy pomocy {{LinkPatrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza, czy rozdział jest centrowany sszablonami normalnymi, które są opisywane, czy to są szablony normalne centrowania, przy pomocy tabeli {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak to liczy jego zawartość, który jest wyświetlany w postaci centrowanej treści, co na podstawie tej wartości jest rewidowany rozdział funkcją: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}.
===== {{Śródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}{{Code|NiestardardoweZnacznikoweWprowdzeniaTekstu}} =====
To samo, co dla funkcji: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, tylko że, tym razem nie dla szablonów centrowania, tylko dla znaczników centrowania {{Tag|center}}.
==== Dalszy opis funkcji ====
Funkcja ma w sobie zwracany iterator,który można wykorzystać do iterowania linii {{LinkPatrz|linia}}, aby sprawdzić, czy to jest rozdział, czy zwykły tekst.
Funkcja wyodrębnia początek i rozdział z możliwą numeracją od siebie na linii z pozycją listy. Jeżeli tego się nie dało wyodrębnić, to mamy wtedy prawdopodobnie rozdział zerowy, ale nie musi być, może być to zwykła linia tekstowa pewnego napisu wprowadzenia tekstu. W takim przypadku funkcja liczy rozdział z numeracją lub wyodrębnia to z tego otoczonego cudzysłowami.
Jeżeli to dało się wyodrębnić {{ZobaczTeż|rozdział}}, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z rozdziału numeracją usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjaalne}}}}, dalej są usuwane odstępu z początku i końca tego czegoś i na podstawie tego jest wyznaczany rozdział i numeracja z tak uzyskanemu szeregu.
W przeciwnym wypadku jest sprawdzane, czy to jest linia z cudzysłowem na podstawie {{LinkŚródtytuł|LiniaCydzyslow}}, a jeżeli funkcja zrzuci wartość odpowiadającą prawdziwej wartości, wtedy rozdział jest równy linii, a poczatek i numeracja są równe ciągowi pustemu.
W innym wypadku, gdy poprzedni warunek nie jest spełniony, sprawdzamy, czy któreś z poszczególnych ciągów z czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne.
Gdy nie jest spełniony warunek {{LinkZobaczTeż|rozdział}}, to wtedy to samo robimy, co tam, tylko bez znaków początku pozycji listy, który usunęliśmy z linii, rozdzielając na dwa łańcuchy znaków.
Jeżeli zusyakny rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii podanemu do funkcji.
{{Hr}}
Uruchamiamy funkcję iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po zmiennej {{Code|tekst}} zpierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza.
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, wtedy ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{Patrz|czy_centrowanie}}, na wartości {{Code|true}}. Potem uruchamiamy funkcję dla niej: {{LinkŚródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}, co potem ta funkcja zwraca wartość {{Code|true}}. A dla szablonów będących linkami sprawdzanymi tabelami: {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy}} i {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy}}, lub funkcją {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=SronicowyParser/Potrzebne}}}}, a jeżeli któreś z nich zwróci wartość {{Code|true}}, wtedy przy istnieniu zmiennej: {{Code|rozdział}}, zmienne: {{Code|poczatek}}, {{Code|rozdzial}}i {{Code|numeracja}}, przyjmują {{ZobaczTeż|nilowanie-rozdział}} wartość {{Code|nil}}, wtedy ta funkcja w iteratorze zwraca wartość {{Code|true}}. A wiec wtedy na podstawie tych wartości prawwdziwej, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
Gdy mamy obiekt: {{Code|LINKW}} lub {{Code|LINKZ}}, wtedy zmiennej {{LinkPatrz|ze_specialnymi_obiektami}} przydzielana jest wartość {{Code|true}}, i przy istnieniu zmiennej {{Code|rozdział}}, inne zmienne takie jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, są tak innicjowane jak tam, a tutaj funkcja zwraca wartość domyślną {{Code|nil}}.
Podobnie jest dla obiektów: {{Code|PRE}}, {{Code|MATH}}, {{Code|ŹRÓDŁO}} i {{Code|INNEPRE}}, jest jak w: {{LinkZobaczTeż|nilowanie-rozdział}}, ze zwracaną wartością domyślną {{Code|nil}}.
Gdy obiekt jest równy: {{Code|ZNACZNIK}}, wtedy używamy funkcji: {{Code|{{sr|#p.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika|p=StronicowyParser/Potrzebne}}}}, do zwracania nazwy, zawartości i atrybutów. Dla zawartości nienilowej, sprawdzane, czy znacznikiem jest: {{Tag|center}}, czy jednych ze znaczników wynikających z tabeli: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}. W tym pierwwszym ustawiamy zmienne: {{LinkPatrz|ze_specialnymi_obiektami}} i {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}, a w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}}, przyjmuje też to samo, i to samo jest zwracane, co w pierwszym. A w obu tych przypadkach uruchamiana jest funkcja: {{LinkŚródtytuł|NiestardardoweZnacznikoweWprowdzeniaTekstu}}.
Uruchamiamy iterator w pętli do zakończenia danych lub przerwania pętli przez funkcję w iteratorze, przez zwracanie przez nią wartości {{Code|nil}}.
== {{Code|p.TekstPoNapisieWprowadzeniaTekstuStrony}} ==
Funkcja liczy tekst pomiędzy dwoma {{Code|id}} rozdziałami o danych identyfikatorach na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstPoNapisieWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}},
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|3}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Funkcja ramki uruchamia: {{Code|{{sr|#p.TekstWprowadzeniaTekstu|b=tak}}}}, do wyszukiwania tekstu pomiędzy dwoma rozdziałami, jako typową funkcję biblioteczną.
Przykłady użycia w postaci ramki {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="mediawiki">
{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}};
</syntaxhighlight>
Wyniki zwrócone przez ramkę uruchomioną, w rozdzicu, jako dziecko:
<syntaxhighlight lang="mediawiki">
'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.
</syntaxhighlight>
== {{Code|p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu}} ==
Funkcja usuwa dolne myślniki i odstępy na końcach podanego tekstu oraz zamienia kolejne je wewnątrz tekstu na jeden dolny myślnik.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do przerobienia.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst=" ____ ___ Tekst_________________ _______nagłówka ___ ___ ___ strony ___ ___";
tekst=stronicowyparser_rozdzialy_modul.UsuwanieSpacjiZnakoweNapisuWprowadzeniaTekstu(tekst);
</syntaxhighlight>
Uzyskano wyniki:
<syntaxhighlight lang="lua">
tekst="Tekst_nagłówka_strony";
</syntaxhighlight>
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty o danym identyfikatorze na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Funkcja też uwzględnia, że dany rozdział w tekście może się powtarzać, i dlatego trzeba to robić za pomocą numerków przy {{Code|id}}, aby wyszukać ten ściśle określony .
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki tablicy transportu funkcji.
Parametry ramki funkcji tablicy transportu:
* {{Code|1}} - nazwa strony - funkcja rozwija nazwę strony,
* {{Code|2}} - identyfikator rozdzialu - domyślna wartość pusta.
Przykłady użycia:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Uzyskane wyniki w postaci nierozwiniętego wikikodu:
<syntaxhighlight lang="mediawiki">
<templatestyles src="Szablon:Link_wewnętrzny/styles.css"><span class="niew link">[[:w:Opera (program)|Opera]]</span>
</syntaxhighlight>
== {{Code|p.NumerSekcjiStrony}} ==
Funkcja liczy numer sekcji rozdziału, który posiada dany identyfikator na podstawie wydobytego ze strony zawartości. Ten tekst jest uzyskany z funkcji: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=mw.title.makeTitle|b=tak}}}}, na podstawie nazwy podanej jako pierwszy argument ramki tablicy transportu, funkcja też potrafić sprawdzić, czy uchwyt pliku jest prawidłowy lub czy plik istnieje, a także czy zawartość strony istnieje, bo np. chcelibyśmy policzyć zawartość strony w przestrzeni {{Np|Special|link=tak}} lub {{Np|Media|link=tak}}, wtedy wiadomo, że otrzymamy, że zawartość strony w tych przestrzeniach nazw nie istnieje, wyjątiem są inne istniejące strony, którego zawartość na pewno istnieje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.NumerSekcjiStrony(frame)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|frame}} - tablica ramki funkcji rablicy transportu.
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
* {{Code|1}} - nazwa strony do analizy (rozwijany funkcją: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma id rozdziałami - funkcja rozwija nazwę strony wwzględem funkcji: frame:preprocess,
* {{Code|2}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta,
Przykład użycia w kodzie {{lpg|Lua}} w {{lpr|Lua|Scribunto}}:
<syntaxhighlight lang="lua">
{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
</syntaxhighlight>
Otrzymane wyniki, to przedstawia numer sekcji podanego rozdziału jest: {{Code|9}}.
== {{Code|p.TekstWprowadzeniaTekstu}} ==
Funkcja liczy tekst pomiędzy dwoma rozdziami o danych identyfikatorach {{Code|id}} na podstawie podanego tekstu do rozważań, który może posiadać rozdziały z tymi unikalnymi wartościami.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} - tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
* {{Code|id_rozdzialu1}} - ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
* {{Code|id_rozdzialu2}} - ten rozdział drugi, przed którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany do końca, od pewnego identyfikatora.
Przykład użycia:
<syntaxhighlight lang="lua">
local strona="Pomoc:Spis treści";
local title=mw.title.makeTitle('',strona);
local tekst=title:getContent();
local id_rozdzialu1="Pomoc Wikibooks";
local id_rozdzialu2="Wstęp";
local stronicowyparser_rozdzialu_modul=require("Module:StronicowyParser/Rozdziały");
tekst=stronicowyparser_rozdzialu_modul.TekstWprowadzeniaTekstu(tekst,id_rozdzialu1,id_rozdzialu2);
</syntaxhighlight>
Uzykane wyniki w tekście pomiędzy dwoma identyfikatorami:
<syntaxhighlight lang="lua">
local tekst="'''{{lr|Czym jest Wikibooks|Wikibooks}}''' jest zbiorem darmowych książek pisanych przez internautów. Poniższe strony pomocy zawierają porady i informacje o naszym projekcie. Projekt ten – będący siostrzanym projektem Wikipedii – powstał 10 lipca 2003 r. Polska wersja została uruchomiona '''24 stycznia 2004 roku''' i w tej chwili posiada już {{Forma wyrazu podręcznik po liczbie|'''{{LICZBAPODRĘCZNIKÓW}}'''}}, a w nich {{Forma wyrazu artykuł po liczbie|'''{{NUMBEROFARTICLES}}'''}}.";
</syntaxhighlight>
== {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} ==
Funkcja, która zastępuje szablony ich ściśle okreslonymi parametrami, ale nie normalnie wszystkimi, według danych, które zwykle są tabelami z modulu: {{Code|{{ld2|StronicowyParser/obiekty}}}}, ale nie zawsze, bo taką tabelę można skonstrułować i włanorecznie podać do tej procedury.
Przykładową tą tabelą, którą można znaleźć pod tym modułem, o którym wspomnialiśmy, jest:
<syntaxhighlight lang="lua">
p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu={
["Kolumny"]=2,---- Tutaj parametry, więcej niż jeden, oddzielamy średnikami, ale tutaj mamy jedynie jeden parametr, więc średniki nie są tutaj potrzebne;
};
</syntaxhighlight>
Jest to tablica zdefiniowana w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, opisana w: {{Code|{{sr|#p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|p=StronicowyParser/obiekty}}}} {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami,
* {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} - tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|kod}} {{LinkPatrz|kod}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{Kolumny|2|Oto jest tekst tego szablonu}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu=mw.loadData("Module:StronicowyParser/obiekty").szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu;
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Uzyskane wyniki: {{Code|Oto jest tekst tego szablonu}}.
== {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} ==
Szablon zamieniający wywołania szablonów w tekście na ich odpowiednie wartości, które przedstawiają się za pomocą dodatków o ogólnym wzorze: {{Code|(<name>)}}. Przykładowa tabela z tymi dodatkami jest w: {{Code|{{ld2|StronicowyParser/obiekty}}}}, a w nim tabela:
<syntaxhighlight lang="lua">
p.szablony_z_dodatkiem_obiektowym={
["ISBN"]="ISBN $(1)";
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_z_dodatkiem_obiektowym|p=StronicowyParser/obiekty}}}}. Pierwszym elementem (kluczem) jest nazwa szablonu, a wartością tego elementu jest przepis, jak zastąpić ten szablon nim, a właściwie w nim dodatek, robiąc jeszcze dodatkowe operacje.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,pelna_nazwa_spisu_tresci_szablonowa,tablica_danych_parametrow_szablonu_strony,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} {{LinkPatrz|szablon}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|kod}} {{LinkPatrz|kod}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt}}.
Funkcja na podstawie użytych elementów z: {{Code|{{ld2|Techniczne}}}}, wykonuje operacje na parametrach, używając procedur dla nazw argumentów: {{Code|{{sr|#p["PrzekształćWzórDoCzystegoTekstu"]|p=Techniczne}}}}, i jego wartościach: {{Code|{{sr|#p["TekstBezOdwołańDoParametrówWeWzorze"]|p=Techniczne}}}}, zamieniając elementy typu: {{Code|(<name>)}}, gdzie {{Code|name}}, to nazwa argumentu, na ich wartości.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablon="{{ISBN|83-8678-825-9}}";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
szablon=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały")
local tablica_danych_parametrow_szablonu_strony={};
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(szablon,nil,tablica_analizy_obiektow_strony_dany_modul);
local tekst="";
for szablon,obiekt,kod in iterator do
if(obiekt=="SZABLON")then
tekst=stronicowyparser_rozdzialy_modul.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu(szablon,"",tablica_danych_parametrow_szablonu_strony,kod)..tekst;
end;
end;
</syntaxhighlight>
Wynikiem działania tego przykładu, ukryty pod przykładem pod zmienną {{Code|tekst}}, przedstawiamy na podstawie tekstu, którym jest wywołanie szablonu: {{Code|{{s|ISBN|83-8678-825-9}}}}, którym jest ukryty pod zmienną {{Code|szablon}}, w wyniku działania tej funkcji, zamieniany jest on na: {{Code|ISBN 83-8678-825-9}}.
== {{Code|p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii}} ==
Funkcja zamienia znaczniki nowej linii: {{Code|<nowiki><br /></nowiki>}} i kreski poziomej {{Code|<nowiki><hr /></nowiki>}}, a także szablony, ich odpowiedniki wersji znacznikowych, tzn. kolejno: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, na jedną wartość: {{Code|\n\n }} (który charakteryzuje trzy linie, ostatnia linia ma początku ma spację, aby ona przypadkiem nie była traktowana, jako np. rozdział), ustaloną przez nią.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local szablonowe_modul=require("Module:Szablonowe");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="Tekst przed{{Br}}, tekst po <br />, a po nim znacznik: <hr />, i szablon {{Hr}}.";
local tablica_analizy_obiektow_strony_dany_modul={};
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii(tekst,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
</syntaxhighlight>
Zwrócone wyniki:
<syntaxhighlight lang="lua">
local tekst="Tekst przed\n\n , tekst po \n\n , a po nim znacznik: \n\n , i szablon \n\n .";
</syntaxhighlight>
== {{Code|p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia}} ==
Funkcja łączy linie w jedną linię, pomiędzy liniami, które nie udało się połączyć z nimi, a jakie to są linie, otóż te, które reprezentują rozdziały, takie jak: {{Code|<nowiki>== Tekst nagłówka ==</nowiki>}}, i linie reprezentowane przez listy, które zaczynają się na: {{Code|<nowiki>[;%*:#]</nowiki>}}. Też nie zostaną połączone z innymi, które zawierają szablony: {{Code|{{s|SpisPozycja}}}}, {{Code|{{s|SpisZw}}}} i {{Code|{{s|SpisTreści}}}}, te szablony sa umieszczone w tabeli, na stronie: {{Code|{{ld2|StronicowyParser/obiekty}}}}, tzn.:
<syntaxhighlight lang="lua">
p.szablony_w_nie_w_tej_samej_linii={
["SpisPozycja"]=true,
["SpisZw"]=true,
["SpisTreści"]=true,
};
</syntaxhighlight>
Tabela opisana w: {{Code|{{sr|#p.szablony_w_nie_w_tej_samej_linii|p=StronicowyParser/obiekty}}}}. Funkcja w wewnątrz linii każdy znacznik: {{Code|<nowiki><br /></nowiki>}} lub {{Code|<nowiki><hr /></nowiki>}} albo {{Code|{{s|Br}}}} lub {{Code|{{s|Hr}}}}, zamienia na {{Code|\n\n }} (przy pomocy funkcji: {{Code|{{sr|#p.UsuwanieZnacznikoweOrazSzablonoweElementuNowejLinii|b=tak}}}}), co potem odpowiada trzem liniom, linia pośrodku jest pusta (lub biała), a jeżeli taki znacznik szablonowy, czy znacznikowy, jest na końcu linii, czyli po prostu, wtedy mamy, jeśli: {{Code|<nowiki>^(.*\n)[^%S\n]*\n[^%S\n]*$</nowiki>}}, co odpowiada dwom oddzielnym liniom, na jakie dzielona jest ona, w końcowym tekście.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_obiektow_strony_dany_modul_uzyskany,tablica_danych_parametrow_szablonu_strony,__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE,__FUNKCJA_OPERACJE_USUWANIE_BAZOWE)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst}} {{LinkPatrz|tekst}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}}.
Przykłady użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local tekst="== Tekst rozdziału ==\nTekst Rozdziału{{Br}}\nTekst rozdziału\nTekst rozdziału\n*# Tekst rodziału\n Tekst rozdziału\n";
local tablica_analizy_obiektow_strony_dany_modul={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:KodowanieSzablonowegoTekstuZObiektamiWikikodu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul);
local tablica_danych_parametrow_szablonu_strony={};
tekst=stronicowyparser_rozdzialy_modul.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia(tekst,nil,"",tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nil,nil);
</syntaxhighlight>
Zwracane wyniki:
<syntaxhighlight lang="lua">
local tekst="== Tekst rozdziału ==\nTekst Rozdziału\nTekst rozdziału Tekst rozdziału\n*# Tekst rodziału\n'\"`UNIQ--INNEPRE-1-QINU`\"'";
</syntaxhighlight>
== {{Śródtytuł|IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział. Przed uruchomieniem iteratora, gdy tekst jest zakodowaany, funkcja modyfikuje zawartość rozdziału, upraszcza na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane. Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}. Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{LinkPatrz|czy_rozdzialy_analizowac}}. Funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca rozdział i zawartość nazwy rozdziału, także zwraca inną zawartość tekstu rozdziału, przynależną temu nagłówkowi, również dalszymo wartościami zwracanymi są zmienne określająca sam napis wprowadzenia tekstu, zmienne zwracane przez iterator są opisane w opisie poniżej. Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek rozdziału.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci}},
* {{Code|czy_rozdzialy_analizowac}} {{Patrz|czy_rozdzialy_analizowac}} - czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
* {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} - czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}},
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych}},
* {{Code|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adreesu szablonu, określa i zawraca jego zawartość,
* {{Code|__FUNKCJA2}} - funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
* {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} - funkcja do analizy i modyfikacji tekstu (może zwracać wartość: {{Code|nil}}) przed samym kodowaniem, jeżeli tekst jest w ogóle jest taki, a jeśli nie, ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} - tojest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} - przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału
* {{Code|numeracja_aktualnego_rozdzialu}} - numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}},
* {{Code|czy_rozdzial_aktualny_centrowany}} - przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych są w: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy ponocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z stworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane. Numerki przy wartoąciach tą są numery parametrów, które przedstawiają ich zawartości.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o nuerze stojącego przy wartości elementów w tej tablicy,jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy}}}}, jego definicja:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
}
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rd9y1yeezqdp2ku049nn0bhskxqi7mg
Szablon:Śródtekst/opis
10
63572
546477
546329
2026-06-12T04:37:58Z
Persino
2851
/* Przykład */
546477
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|StronicowyParser}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony stronicowe}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablon {{s|Śródtekst}} służy do ustawienia pewnemu uchwytowi jakiś tekst, który można pobrać przy pomocy: {{s|PobierzŚródtekst}}.
== Opis parametrów ==
; Parametry
* {{Code|tekst}}, {{Code|treść}} lub {{Code|1}} - tekst, któremu przyporządkowany jest pewien uchwyt,
* {{Code|uchwyt}} lub {{Code|2}} - uchwyt tekstu,
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu,
* {{Code|bez preprocess}} - jeśli niepuste, to tekst nie jest wstępnie rozwijany przez funkcję: {{Code|{{lz|s=https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/pl|g=frame:preprocess|b=tak}}}}, w przeciwnym wypadku już tak.
----
Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów.
----
; Uwagi
* Parametr {{Parametr|bez kategorii stronicowych|tak}}, gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|bez automatu|tak}}, gdy wartość niepusta, to wyłącza generowanie jakikolwiek kategorii stronicowych i uchwyt śródtekstu jest wtedy powtarzany (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|uchwyt|jakiś uchwyt}} lub {{Parametr|2|jakiś uchwyt}}, to przyjmują wartość niepustą, która jest uchwytem tłumaczonej na tekst danego śródtekstu, w tym przypadku wyświetlana jest zawartość zmiennej tekstowej.
== Przykład ==
; Przykład pierwszy
{{s|Śródtekst|uchwyt{{=}}uchwyt|tekst{{=}}{{s|Lorem ipsum}}}} → {{Śródtekst|uchwyt=uchwyt|tekst={{Lorem ipsum}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt}} → {{PobierzŚródtekst|uchwyt=uchwyt}}
----
----
; Przykład drugi
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt||Szablon:PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt||Szablon:PobierzŚródtekst}}
----
----
; Przykład trzeci
{{s|PobierzŚródtekst|uchwyt_klucz|klucz{{=}}PobierzŚródtekst||Szablon:PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt_klucz|klucz=PobierzŚródtekst||Szablon:PobierzŚródtekst}}
----
----
; Przykład czwarty
{{s|Śródtekst|uchwyt{{=}}patrz|bez preprocess{{=}}tak|tekst{{=}}Oto jest tekst z {{s|Patrz|śródtekst}}}} → {{Śródtekst|uchwyt=patrz|bez preprocess=tak|tekst=Oto jest tekst z {{Patrz|śródtekst}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"tekst": {
"aliases": [
"treść,",
"1"
],
"description": "Tekst, którego zawartość jest rozwinięta, będzie pobierany przez szablon {{PobierzŚródtekst}}.",
"required": true
},
"uchwyt": {
"aliases": [
"2"
],
"description": "Uchwyt nagłówka rozdziału.",
"type": "string",
"suggested": true
},
"bez kategorii stronicowych": {
"description": "Wylącza generowanie kategorii Stronicowego Parsera."
},
"bez kategorii": {
"description": "Gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii.",
"type": "string"
}
},
"description": "Szablon do odwoływania się do nagłówka rozdziału za pomocą linków poprzez jego uchwyt.",
"paramOrder": [
"tekst",
"uchwyt",
"bez kategorii",
"bez kategorii stronicowych"
]
}
</templatedata>
== Zobacz też ==
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony stronicowe tekstowe}}
</includeonly>
arprlu2ltcxq8cp7iphk35ggrd1du5x
Szablon:PobierzŚródtekst/opis
10
63574
546478
546325
2026-06-12T04:42:46Z
Persino
2851
/* Przykład */
546478
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|StronicowyParser}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony stronicowe}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablon {{s|PobierzŚródtekst}} służy do pobierania danych ustawionej przez szablon {{s|Śródtekst}}.
== Opis parametrów ==
Będziemy tutaj wypisywali zmienne szablonu {{s|PobierzŚródtekst}}.
----
; Zmienne w wywołaniu podstawowym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu, bez adresu książki, (opcjonalny).
; Dodatkowe opcje
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny).
; Opcjonalne
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
; Zmienne w wywołaniu pełnym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu (opcjonalny),
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny),
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów.
----
; Uwagi
* Parametr {{Parametr|bez kategorii stronicowych|tak}}, gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|bez automatu|tak}}, gdy wartość niepusta, to wyłącza generowanie jakikolwiek kategorii stronicowych i uchwyt śródtekstu jest wtedy powtarzany (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|uchwyt|jakiś uchwyt}} lub {{Parametr|1|jakiś uchwyt}}, to przyjmują wartość niepustą, która jest uchwytem tłumaczonej na tekst danego śródtekstu, w tym przypadku wyświetlana jest zawartość zmiennej tekstowej o tym uchwycie.
== Przykład ==
; Przykład pierwszy
{{s|Śródtekst|uchwyt{{=}}uchwyt|tekst{{=}}{{s|Lorem ipsum}}}} → {{Śródtekst|uchwyt=uchwyt|tekst={{Lorem ipsum}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt}} → {{PobierzŚródtekst|uchwyt=uchwyt}}
----
----
; Przykład drugi
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt||Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt||Szablon:Śródtekst}}
----
----
; Przykład trzeci
{{s|Śródtekst|uchwyt{{=}}uchwyt_klucz|tekst{{=}}{{s|Tt|To jest zmienna z kluczem stronicowego parsera szablonu {{s|Code|{{(((}}klucz{{!}}Śródtekst{{)))}}.}}}}}} → {{Śródtekst|uchwyt=uchwyt_klucz|tekst={{Tt|To jest zmienna z kluczem stronicowego parsera szablonu: {{Code|{{{klucz|Śródtekst}}}}}.}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt_klucz|klucz{{=}}PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt=uchwyt_klucz|klucz=PobierzŚródtekst}}
----
----
; Przykład czwarty
{{s|PobierzŚródtekst|uchwyt{{=}}patrz|nazwa artykułu{{=}}|nazwa książki{{=}}Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt=patrz|nazwa artykułu=|nazwa książki=Szablon:Śródtekst}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"uchwyt": {
"aliases": [
"1"
],
"description": "Uchwyt obiektu.",
"type": "string",
"required": true
},
"nazwa artykułu": {
"aliases": [
"2"
],
"description": "Nazwa artykułu.",
"type": "wiki-page-name",
"suggested": true
},
"nazwa książki": {
"aliases": [
"3"
],
"description": "Nazwa książki",
"type": "wiki-page-name",
"suggested": true
},
"bez kategorii": {
"description": "Gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii.",
"type": "string"
},
"bez kategorii stronicowych": {
"description": "Wylącza generowanie kategorii Stronicowego Parsera.",
"type": "string"
}
},
"paramOrder": [
"uchwyt",
"nazwa artykułu",
"nazwa książki",
"bez kategorii",
"bez kategorii stronicowych"
],
"description": "Szablon tworzy linki do różnego rodzaju obiektów na stronie podręczników."
}
</templatedata>
== Zobacz też ==
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony stronicowe tekstowe}}
</includeonly>
bi5w66iltnqzeidzqnymbf5u25bewdc
546480
546478
2026-06-12T05:35:52Z
Persino
2851
/* Przykład */
546480
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|StronicowyParser}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony stronicowe}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablon {{s|PobierzŚródtekst}} służy do pobierania danych ustawionej przez szablon {{s|Śródtekst}}.
== Opis parametrów ==
Będziemy tutaj wypisywali zmienne szablonu {{s|PobierzŚródtekst}}.
----
; Zmienne w wywołaniu podstawowym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu, bez adresu książki, (opcjonalny).
; Dodatkowe opcje
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny).
; Opcjonalne
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
; Zmienne w wywołaniu pełnym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu (opcjonalny),
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny),
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów.
----
; Uwagi
* Parametr {{Parametr|bez kategorii stronicowych|tak}}, gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|bez automatu|tak}}, gdy wartość niepusta, to wyłącza generowanie jakikolwiek kategorii stronicowych i uchwyt śródtekstu jest wtedy powtarzany (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|uchwyt|jakiś uchwyt}} lub {{Parametr|1|jakiś uchwyt}}, to przyjmują wartość niepustą, która jest uchwytem tłumaczonej na tekst danego śródtekstu, w tym przypadku wyświetlana jest zawartość zmiennej tekstowej o tym uchwycie.
== Przykład ==
; Przykład pierwszy
{{s|Śródtekst|uchwyt{{=}}uchwyt|tekst{{=}}{{s|Lorem ipsum}}}} → {{Śródtekst|uchwyt=uchwyt|tekst={{Lorem ipsum}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt}} → {{PobierzŚródtekst|uchwyt=uchwyt}}
----
----
; Przykład drugi
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt||Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt||Szablon:Śródtekst}}
----
----
; Przykład trzeci
{{s|Śródtekst|uchwyt{{=}}uchwyt_klucz|tekst{{=}}{{s|Tt|To jest zmienna z kluczem stronicowego parsera szablonu {{s|Code|{{(((}}klucz{{!}}Śródtekst{{)))}}.}}}}}} → {{Śródtekst|uchwyt=uchwyt_klucz|tekst={{Tt|To jest zmienna z kluczem stronicowego parsera szablonu: {{Code|{{{klucz|Śródtekst}}}}}.}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt_klucz|klucz{{=}}PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt=uchwyt_klucz|klucz=PobierzŚródtekst}}
----
----
; Przykład czwarty
{{s|PobierzŚródtekst|uchwyt{{=}}patrz|nazwa artykułu{{=}}|nazwa książki{{=}}Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt=patrz|nazwa artykułu=|nazwa książki=Szablon:Śródtekst}}
* A oto jest odłowanie do {{LinkPatrz|śródtekst}}.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"uchwyt": {
"aliases": [
"1"
],
"description": "Uchwyt obiektu.",
"type": "string",
"required": true
},
"nazwa artykułu": {
"aliases": [
"2"
],
"description": "Nazwa artykułu.",
"type": "wiki-page-name",
"suggested": true
},
"nazwa książki": {
"aliases": [
"3"
],
"description": "Nazwa książki",
"type": "wiki-page-name",
"suggested": true
},
"bez kategorii": {
"description": "Gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii.",
"type": "string"
},
"bez kategorii stronicowych": {
"description": "Wylącza generowanie kategorii Stronicowego Parsera.",
"type": "string"
}
},
"paramOrder": [
"uchwyt",
"nazwa artykułu",
"nazwa książki",
"bez kategorii",
"bez kategorii stronicowych"
],
"description": "Szablon tworzy linki do różnego rodzaju obiektów na stronie podręczników."
}
</templatedata>
== Zobacz też ==
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony stronicowe tekstowe}}
</includeonly>
6zvmcs1ur8ia7o8jlgsd4zpjs0ao7dz
546487
546480
2026-06-12T06:23:19Z
Persino
2851
/* Przykład */
546487
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|StronicowyParser}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony stronicowe}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablon {{s|PobierzŚródtekst}} służy do pobierania danych ustawionej przez szablon {{s|Śródtekst}}.
== Opis parametrów ==
Będziemy tutaj wypisywali zmienne szablonu {{s|PobierzŚródtekst}}.
----
; Zmienne w wywołaniu podstawowym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu, bez adresu książki, (opcjonalny).
; Dodatkowe opcje
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny).
; Opcjonalne
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
; Zmienne w wywołaniu pełnym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu (opcjonalny),
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny),
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów.
----
; Uwagi
* Parametr {{Parametr|bez kategorii stronicowych|tak}}, gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|bez automatu|tak}}, gdy wartość niepusta, to wyłącza generowanie jakikolwiek kategorii stronicowych i uchwyt śródtekstu jest wtedy powtarzany (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|uchwyt|jakiś uchwyt}} lub {{Parametr|1|jakiś uchwyt}}, to przyjmują wartość niepustą, która jest uchwytem tłumaczonej na tekst danego śródtekstu, w tym przypadku wyświetlana jest zawartość zmiennej tekstowej o tym uchwycie.
== Przykład ==
; Przykład pierwszy
{{s|Śródtekst|uchwyt{{=}}uchwyt|tekst{{=}}{{s|Lorem ipsum}}}} → {{Śródtekst|uchwyt=uchwyt|tekst={{Lorem ipsum}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt}} → {{PobierzŚródtekst|uchwyt=uchwyt}}
----
----
; Przykład drugi
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt||Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt||Szablon:Śródtekst}}
----
----
; Przykład trzeci
{{s|Śródtekst|uchwyt{{=}}uchwyt_klucz|tekst{{=}}{{s|Tt|To jest zmienna z kluczem stronicowego parsera szablonu {{s|Code|{{(((}}klucz{{!}}Śródtekst{{)))}}.}}}}}} → {{Śródtekst|uchwyt=uchwyt_klucz|tekst={{Tt|To jest zmienna z kluczem stronicowego parsera szablonu: {{Code|{{{klucz|Śródtekst}}}}}.}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt_klucz|klucz{{=}}PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt=uchwyt_klucz|klucz=PobierzŚródtekst}}
----
----
; Przykład czwarty
{{s|PobierzŚródtekst|uchwyt{{=}}patrz|nazwa artykułu{{=}}|nazwa książki{{=}}Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt=patrz|nazwa artykułu=|nazwa książki=Szablon:Śródtekst}}
* A oto jest odłowanie {{Patrz|śródtekst2}} do {{LinkPatrz|śródtekst}}.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"uchwyt": {
"aliases": [
"1"
],
"description": "Uchwyt obiektu.",
"type": "string",
"required": true
},
"nazwa artykułu": {
"aliases": [
"2"
],
"description": "Nazwa artykułu.",
"type": "wiki-page-name",
"suggested": true
},
"nazwa książki": {
"aliases": [
"3"
],
"description": "Nazwa książki",
"type": "wiki-page-name",
"suggested": true
},
"bez kategorii": {
"description": "Gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii.",
"type": "string"
},
"bez kategorii stronicowych": {
"description": "Wylącza generowanie kategorii Stronicowego Parsera.",
"type": "string"
}
},
"paramOrder": [
"uchwyt",
"nazwa artykułu",
"nazwa książki",
"bez kategorii",
"bez kategorii stronicowych"
],
"description": "Szablon tworzy linki do różnego rodzaju obiektów na stronie podręczników."
}
</templatedata>
== Zobacz też ==
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony stronicowe tekstowe}}
</includeonly>
iptcy2u5r057ez20iwqtlryu7kpnyec
546488
546487
2026-06-12T06:35:02Z
Persino
2851
/* Przykład */
546488
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|StronicowyParser}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony stronicowe}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Szablon {{s|PobierzŚródtekst}} służy do pobierania danych ustawionej przez szablon {{s|Śródtekst}}.
== Opis parametrów ==
Będziemy tutaj wypisywali zmienne szablonu {{s|PobierzŚródtekst}}.
----
; Zmienne w wywołaniu podstawowym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu, bez adresu książki, (opcjonalny).
; Dodatkowe opcje
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny).
; Opcjonalne
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
; Zmienne w wywołaniu pełnym tego szablonu
* {{Code|1}} lub {{Code|uchwyt}} = uchwyt,
* {{Code|2}} lub {{Code|nazwa artykułu}} = nazwa modułu (opcjonalny),
* {{Code|3}} lub {{Code|nazwa książki}} = pełna nazwa książki (opcjonalny),
* {{Code|klucz}} - zmienna sterująca wyświetlaniem kodu.
----
Powyższe zmienne o nazwie określonej liczbą naturalną można użyć również bez nazywania parametrów.
----
; Uwagi
* Parametr {{Parametr|bez kategorii stronicowych|tak}}, gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii, (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|bez automatu|tak}}, gdy wartość niepusta, to wyłącza generowanie jakikolwiek kategorii stronicowych i uchwyt śródtekstu jest wtedy powtarzany (opcjonalny, automatycznie ustawiony na wartość pustą).
* Parametr {{Parametr|uchwyt|jakiś uchwyt}} lub {{Parametr|1|jakiś uchwyt}}, to przyjmują wartość niepustą, która jest uchwytem tłumaczonej na tekst danego śródtekstu, w tym przypadku wyświetlana jest zawartość zmiennej tekstowej o tym uchwycie.
== Przykład ==
; Przykład pierwszy
{{s|Śródtekst|uchwyt{{=}}uchwyt|tekst{{=}}{{s|Lorem ipsum}}}} → {{Śródtekst|uchwyt=uchwyt|tekst={{Lorem ipsum}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt}} → {{PobierzŚródtekst|uchwyt=uchwyt}}
----
----
; Przykład drugi
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt||Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt||Szablon:Śródtekst}}
----
----
; Przykład trzeci
{{s|Śródtekst|uchwyt{{=}}uchwyt_klucz|tekst{{=}}{{s|Tt|To jest zmienna z kluczem stronicowego parsera szablonu {{s|Code|{{(((}}klucz{{!}}Śródtekst{{)))}}.}}}}}} → {{Śródtekst|uchwyt=uchwyt_klucz|tekst={{Tt|To jest zmienna z kluczem stronicowego parsera szablonu: {{Code|{{{klucz|Śródtekst}}}}}.}}}}
----
{{s|PobierzŚródtekst|uchwyt{{=}}uchwyt_klucz|klucz{{=}}PobierzŚródtekst}} → {{PobierzŚródtekst|uchwyt=uchwyt_klucz|klucz=PobierzŚródtekst}}
----
----
; Przykład czwarty
* A oto jest odwołanie {{Patrz|śródtekst3}}.
{{s|PobierzŚródtekst|uchwyt{{=}}patrz|nazwa artykułu{{=}}|nazwa książki{{=}}Szablon:Śródtekst}} → {{PobierzŚródtekst|uchwyt=patrz|nazwa artykułu=|nazwa książki=Szablon:Śródtekst}}
* A oto jest odłowanie {{Patrz|śródtekst2}} do {{LinkPatrz|śródtekst}}.
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"uchwyt": {
"aliases": [
"1"
],
"description": "Uchwyt obiektu.",
"type": "string",
"required": true
},
"nazwa artykułu": {
"aliases": [
"2"
],
"description": "Nazwa artykułu.",
"type": "wiki-page-name",
"suggested": true
},
"nazwa książki": {
"aliases": [
"3"
],
"description": "Nazwa książki",
"type": "wiki-page-name",
"suggested": true
},
"bez kategorii": {
"description": "Gdy wartość niepusta, to wyłącza generowanie dodatkowych kategorii.",
"type": "string"
},
"bez kategorii stronicowych": {
"description": "Wylącza generowanie kategorii Stronicowego Parsera.",
"type": "string"
}
},
"paramOrder": [
"uchwyt",
"nazwa artykułu",
"nazwa książki",
"bez kategorii",
"bez kategorii stronicowych"
],
"description": "Szablon tworzy linki do różnego rodzaju obiektów na stronie podręczników."
}
</templatedata>
== Zobacz też ==
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony stronicowe tekstowe}}
</includeonly>
i44qtox3k5n9hat5xkn1e7ihp6h68np
Sosy
0
63594
546435
544744
2026-06-11T17:02:48Z
EdytaT
2664
/* Sosy */
546435
wikitext
text/x-wiki
{{status|-25%|Kulinaria}}
{{Rozdział|Podręcznik|Sosy}}
<small>< [[Sosy/Okładka|Okładka]]</small>
{{FormularzWejścia|typ=search|szerokość=40|przestrzenie=(Główna)**|przedrostek=Sosy|szukaj=Szukaj|przerwa=no|zastępczy=Wyszukaj}}
== Sosy ==
# [[Sosy/Palone masło|Palone masło (beurre noisette)]]
# [[Sosy/Sos bearneński|Sos bearneński (sauce béarnaise)]]
# [[Sosy/Sos bolzański|Sos bolzański (sauce de Bolzano)]]
# [[Sosy/Sos holenderski|Sos holenderski (sauce hollandaise)]]
# [[Sosy/Sos maślano-cytrynowy|Sos maślano-cytrynowy (beurre blanc au citron)]]
# [[Sosy/Sos musztardowo-śmietanowy|Sos musztardowo-śmietanowy (sauce à la crème et moutarde)]]
# [[Sosy/Sos maślano-winny|Sos maślano-winny (beurre blanc)]]
# [[Sosy/Sos pieczarkowy|Sos pieczarkowy (sauce aux champignons)]]
== Sosy do dań ==
* Szparagi
# Klasyczny [[Sosy/Sos holenderski|sos holenderski]] doskonale pasuje do białych szparagów.
# [[Sosy/Sos bearneński|Sos bearneński]] ze względu na swój ziołowy, lekko anyżowy aromat, stanowi doskonałą, bardziej wyrazistą alternatywę dla klasycznego [[Sosy/Sos holenderski|sosu holenderskiego]].
# Roztopione masło: najbardziej tradycyjna i najprostsza wersja. Masło lekko podgrzewa się (często z odrobiną soku z cytryny) i polewa nim szparagi.
# [[Sosy/Palone masło|Palone masło (beurre noisette)]] jest idealne do szparagów z bułką tartą.
== [[Sosy/Słowniczek|Słowniczek]] ==
== [[Sosy/Bibliografia|Bibliografia]] ==
== Przypisy ==
{{Przypisy}}
l9h8d1e221b3q81rw4ar65ru37t9dfj
546445
546435
2026-06-11T17:32:58Z
EdytaT
2664
/* Sosy do dań */
546445
wikitext
text/x-wiki
{{status|-25%|Kulinaria}}
{{Rozdział|Podręcznik|Sosy}}
<small>< [[Sosy/Okładka|Okładka]]</small>
{{FormularzWejścia|typ=search|szerokość=40|przestrzenie=(Główna)**|przedrostek=Sosy|szukaj=Szukaj|przerwa=no|zastępczy=Wyszukaj}}
== Sosy ==
# [[Sosy/Palone masło|Palone masło (beurre noisette)]]
# [[Sosy/Sos bearneński|Sos bearneński (sauce béarnaise)]]
# [[Sosy/Sos bolzański|Sos bolzański (sauce de Bolzano)]]
# [[Sosy/Sos holenderski|Sos holenderski (sauce hollandaise)]]
# [[Sosy/Sos maślano-cytrynowy|Sos maślano-cytrynowy (beurre blanc au citron)]]
# [[Sosy/Sos musztardowo-śmietanowy|Sos musztardowo-śmietanowy (sauce à la crème et moutarde)]]
# [[Sosy/Sos maślano-winny|Sos maślano-winny (beurre blanc)]]
# [[Sosy/Sos pieczarkowy|Sos pieczarkowy (sauce aux champignons)]]
== Sosy do dań ==
* Szparagi
# Klasyczny [[Sosy/Sos holenderski|sos holenderski]] doskonale pasuje do białych szparagów.
# [[Sosy/Sos bearneński|Sos bearneński]] ze względu na swój ziołowy, lekko anyżowy aromat, stanowi doskonałą, bardziej wyrazistą alternatywę dla klasycznego [[Sosy/Sos holenderski|sosu holenderskiego]].
# Roztopione masło: najbardziej tradycyjna i najprostsza wersja. Masło lekko podgrzewa się (często z odrobiną soku z cytryny) i polewa nim szparagi.
# [[Sosy/Palone masło|Palone masło (beurre noisette)]] jest idealne do szparagów z bułką tartą.
# Szparagi z szynką polane [[Sosy/Sos bolzański|sosem bolzańskim]] to pyszne zestawienie.
== [[Sosy/Słowniczek|Słowniczek]] ==
== [[Sosy/Bibliografia|Bibliografia]] ==
== Przypisy ==
{{Przypisy}}
js943h4pba43jx22l2pf5rlaiaw5ard
546447
546445
2026-06-11T17:42:51Z
EdytaT
2664
/* Sosy do dań */
546447
wikitext
text/x-wiki
{{status|-25%|Kulinaria}}
{{Rozdział|Podręcznik|Sosy}}
<small>< [[Sosy/Okładka|Okładka]]</small>
{{FormularzWejścia|typ=search|szerokość=40|przestrzenie=(Główna)**|przedrostek=Sosy|szukaj=Szukaj|przerwa=no|zastępczy=Wyszukaj}}
== Sosy ==
# [[Sosy/Palone masło|Palone masło (beurre noisette)]]
# [[Sosy/Sos bearneński|Sos bearneński (sauce béarnaise)]]
# [[Sosy/Sos bolzański|Sos bolzański (sauce de Bolzano)]]
# [[Sosy/Sos holenderski|Sos holenderski (sauce hollandaise)]]
# [[Sosy/Sos maślano-cytrynowy|Sos maślano-cytrynowy (beurre blanc au citron)]]
# [[Sosy/Sos musztardowo-śmietanowy|Sos musztardowo-śmietanowy (sauce à la crème et moutarde)]]
# [[Sosy/Sos maślano-winny|Sos maślano-winny (beurre blanc)]]
# [[Sosy/Sos pieczarkowy|Sos pieczarkowy (sauce aux champignons)]]
== Sosy do dań ==
* Szparagi
# Klasyczny [[Sosy/Sos holenderski|sos holenderski]] doskonale pasuje do białych szparagów.
# [[Sosy/Sos bearneński|Sos bearneński]] ze względu na swój ziołowy, lekko anyżowy aromat, stanowi doskonałą, bardziej wyrazistą alternatywę dla klasycznego [[Sosy/Sos holenderski|sosu holenderskiego]].
# Roztopione masło: najbardziej tradycyjna i najprostsza wersja. Masło lekko podgrzewa się (często z odrobiną soku z cytryny) i polewa nim szparagi.
# [[Sosy/Palone masło|Palone masło (beurre noisette)]] jest idealne do szparagów z bułką tartą.
# Szparagi z szynką polane [[Sosy/Sos bolzański|sosem bolzańskim]] i posypane parmezanem to pyszne zestawienie.
== [[Sosy/Słowniczek|Słowniczek]] ==
== [[Sosy/Bibliografia|Bibliografia]] ==
== Przypisy ==
{{Przypisy}}
m90xphfgm7vxsg911obz17oudhhhpnz
Moduł:StronicowyParser/SzablonyTekstu
828
63668
546448
546418
2026-06-11T18:30:49Z
Persino
2851
546448
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
table.insert(dodatkowe_elementy,{obiekt,kod,});
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych)
if(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)do
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(tablica_zmiennych,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
ohnl18wx7ytt48wllh52sm0d4j7zrna
546450
546448
2026-06-11T19:00:10Z
Persino
2851
546450
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
table.insert(dodatkowe_elementy,{obiekt,kod,});
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych)
if(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(tablica_zmiennych,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
poxe89w51o33qovgiydvooqhjq4t8s8
546467
546450
2026-06-12T02:45:28Z
Persino
2851
546467
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
table.insert(dodatkowe_elementy,{obiekt,kod,});
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
6lkwz25k4fk40u6evph9lm1vru98mu0
546471
546467
2026-06-12T03:40:55Z
Persino
2851
546471
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
table.insert(dodatkowe_elementy,{obiekt,kod,});
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
--if(szablon)then
--IterowaniePoElementachTekstu(szablon);
--end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
j751oadz8bsc9f6rvoj41aypnd71x39
546473
546471
2026-06-12T04:12:46Z
Persino
2851
546473
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
table.insert(tab_numer,{name,#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name],});
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
--if(szablon)then
--IterowaniePoElementachTekstu(szablon);
--end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
8zn2rp69ed8o3wq9ycns6wmjiet0nvx
546474
546473
2026-06-12T04:20:08Z
Persino
2851
546474
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
--if(szablon)then
--IterowaniePoElementachTekstu(szablon);
--end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
fy53ifwnavztmxmyhbp8hu5d3necw9a
546475
546474
2026-06-12T04:26:54Z
Persino
2851
546475
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
3oz2s1cx1kigsalg9gpikabza9vsmrs
546476
546475
2026-06-12T04:29:34Z
Persino
2851
546476
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
elseif(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
96kio0i9r4tptw3xsoydtmskx3vbr80
546479
546476
2026-06-12T05:28:25Z
Persino
2851
546479
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then return szablon;end;
return;
end;
end;
end;
end;
local szablon;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
njmrxzclxa840bcep8ifgdq6pm7pekh
546481
546479
2026-06-12T05:45:44Z
Persino
2851
546481
Scribunto
text/plain
local p={};
function p.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,czy_artykul_korzystany)
local tablica_szablonu_tekstu;
if(czy_artykul_korzystany)then
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_korzystanych;
else
tablica_szablonu_tekstu=tablica_zmiennych2.tablica_szablonu_tekstu_niekorzystanych;
end;
if(tablica_szablonu_tekstu)then
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local nazwa_obiektu_tekstu=pozycja[1][1];
local uchwyt_obiektu_tekstu=pozycja[1][2];
if((nazwa_obiektu_tekstu==nazwa_obiektu)and(uchwyt_obiektu_tekstu==uchwyt_obiektu))then
local dodatkowe_elementy=pozycja[2];
local czy_tak=false;
for _,pozycja_dodatkowe in ipairs(dodatkowe_elementy)do
if((pozycja_dodatkowe[1]==obiekt)and(pozycja_dodatkowe[2]==kod))then
czy_tak=true;
break;
end;
end;
if(not czy_tak)then
local tab_numer;
if(tablica_zmiennych)then
tab_numer={};
for name,value in pairs(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)do
tab_numer[name]=#tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[name];
end;
end;
table.insert(dodatkowe_elementy,{obiekt,kod,tab_numer});
break;
end;
end;
end;
end;
end;
function p.UstawPobierzKorzystanie(tablica_zmiennych2)
if(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)then
for _,pozycja in ipairs(tablica_zmiennych2.tablica_szablonu_tekstu_linkowe_korzystane)do
if(not pozycja[3])then
pozycja[3]=true;
local nazwa_obiektu=pozycja[1][1];
local uchwyt_obiektu=pozycja[1][2];
local obiekt=pozycja[2][1];
local kod=pozycja[2][2];
p.UstawianiePobierz(nil,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,true);
end;
end;
end;
end;
function p.ZamienianiePobierzNaKod(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane)
local __tablica_analizy_obiektow_strony_dany_modul=(pozycja[4] or{})[1] or tablica_analizy_obiektow_strony_dany_modul;
local __tablica_danych_parametrow_szablonu_strony=(pozycja[4] or {})[2] or tablica_danych_parametrow_szablonu_strony;
local tabela_parametrow_szablonu=pozycja[3][1][1];
----
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then
local szablonowe_modul=require("Module:Szablonowe");
----
local tab_analiza=szablonowe_modul.LiczbyParametroweInformacjiBazyKodowaniaWikikodu();
--local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul);
local tab_numer={};
local tab_tak={};
local szablonowe_modul=require("Module:Szablonowe");
tekst=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst,nil,__tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod,poziom_iteracji,_,obiekt_rodzica,kod_rodzica,szablon_rodzica,_,_,poziom_iteracji_rodzica)
obiekt_rodzica=obiekt_rodzica or true;
kod_rodzica=kod_rodzica or true;
local tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica];
if(not tab_tak_obiekt_rodzica)then tab_tak[obiekt_rodzica]={};tab_tak_obiekt_rodzica=tab_tak[obiekt_rodzica]end;
local tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica];
if(not tab_tak_kod_rodzica)then tab_tak_obiekt_rodzica[kod_rodzica]={};tab_tak_kod_rodzica=tab_tak_obiekt_rodzica[kod_rodzica]end;
local czy_tak=tab_tak_kod_rodzica[obiekt];
tab_tak_kod_rodzica[obiekt]=true;
tab_numer[obiekt]=tab_numer[obiekt] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt);
local max_numer=tab_numer[obiekt];
local kod_temp=kod+max_numer;
--tablica_analizy_obiektow_strony_dany_modul[obiekt][kod_temp]=szablon;
local ile;
if(not czy_tak)then
szablon_rodzica,ile=mw.ustring.gsub(szablon_rodzica,szablonowe_modul.NormaWzoruKodowaniaTekstu(obiekt),function(kod)
kod=tonumber(kod) or nil;
return szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod+max_numer);
end);
end;
local tab_obiekt=tab_analiza[obiekt];
if(tab_obiekt)then
for _, wartosc in pairs(tab_obiekt)do
local tab_wartosc=tablica_danych_parametrow_szablonu_strony[wartosc];
if(not tab_wartosc)then
tablica_danych_parametrow_szablonu_strony[wartosc]={};
end;
tablica_danych_parametrow_szablonu_strony[wartosc][kod_temp]=(__tablica_danych_parametrow_szablonu_strony[wartosc] or {})[kod];
end;
end;
if(poziom_iteracji>0)then
tab_numer[obiekt_rodzica]=tab_numer[obiekt_rodzica] or szablonowe_modul.NumerSzablonuObiektu(tablica_analizy_obiektow_strony_dany_modul,obiekt_rodzica);
local max_numer_rodzica=tab_numer[obiekt_rodzica];
kod_rodzica=kod_rodzica+max_numer_rodzica;
end;
if(not czy_tak)then
return nil,szablon,obiekt,kod_temp,szablon_rodzica,obiekt_rodzica,kod_rodzica,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
else
return nil,szablon,obiekt,kod_temp,nil,nil,nil,tablica_analizy_obiektow_strony_dany_modul,max_numer_rodzica;
end;
return;
end);
return tekst;
----
end;
return;
end;
function p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local function TempFunc(tablica_szablonu_tekstu,__funkcja,czy_korzystane)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_obiekty=pozycja[2];
for _,pozycja2 in ipairs(tab_obiekty)do
local __obiekt=pozycja2[1];
local __kod=pozycja2[2];
if((__obiekt==obiekt)and(__kod==kod))then
local szablon=__funkcja(obiekt,kod,pozycja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_korzystane);
if(szablon)then
tab_numer=pozycja2[3];
return szablon,tab_numer;
end;
return;
end;
end;
end;
end;
local szablon;local tab_numer;
if(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_korzystanych,p.ZamienianiePobierzNaKod,true);
end;
if(not szablon)then
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
szablon,tab_numer=TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych,p.ZamienianiePobierzNaKod,false);
end;
end;
if(szablon)then return szablon,tab_numer;end;
return nil;
end;
function p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
local tablica_szablonu_tekstu_korzystanych=tablica_zmiennych.tablica_szablonu_tekstu_korzystanych;
for _,pozycja in ipairs(tablica_szablonu_tekstu_korzystanych)do
local __obiekt=pozycja[3][2];
local __kod=pozycja[3][3];
if((obiekt==__obiekt)and(kod==__kod))then
local tabela_parametrow_szablonu=pozycja[3][1][1];
local tekst=tabela_parametrow_szablonu["tekst"] or tabela_parametrow_szablonu["treść"] or tabela_parametrow_szablonu[1];
if(tekst)then return tekst;end;
return nil;
end;
end;
return nil;
end;
function p.AktualizowanieSzablonowychTekstowychKompletowaniaTOC(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu)
if((not tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)and(not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych))then return nil;end;
if(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)then
local function TempFunc(tablica_szablonu_tekstu)
for _,pozycja in ipairs(tablica_szablonu_tekstu)do
local tab_pobierz=pozycja[2];
for _,value in ipairs(tab_pobierz)do
return true;
end;
end;
return nil;
end;
if((not tablica_zmiennych.tablica_szablonu_tekstu_korzystanych)and(not TempFunc(tablica_zmiennych.tablica_szablonu_tekstu_niekorzystanych)))then return nil;end;
end;
local stronicowyparser_obiekty_modul=require("Module:StronicowyParser/obiekty");
local tab_pobierz_szablonu_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local tab_szablony_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu;
local czy_pobierz=nil;
local szablonowe_modul=require("Module:Szablonowe");
tekst_rozwiniety_calego_artykulu=szablonowe_modul:ModyfikowanieKodowoSzablonoweZakodowanegoTekstu(tekst_rozwiniety_calego_artykulu,nil,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod,poziom_iteracji)
if(czy_pobierz)then
szablon,tab_numer=p.EdytowanieSzablonoweTekstuTypuPobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych);
if(szablon)then
IterowaniePoElementachTekstu(szablon,tab_numer);
end;
else
szablon=p.EdytowanieSzablonoweTekstuTypuNiePobierz(szablon,obiekt,kod,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych)
end;
if(szablon)then return szablon;end;
return nil;
end,nil,
function(szablon,obiekt,kod,poziom_iteracji)
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,pelna_nazwa_spisu_tresci_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
----
if(tab_pobierz_szablonu_tekstu[nazwa_szablonu])then
czy_pobierz=true;
return true;
elseif(tab_szablony_tekstu[nazwa_szablonu])then
czy_pobierz=false;
return true;
end;
return nil;
end);
if(wynik)then return wynik;end;
end;
return nil;
end);
return tekst_rozwiniety_calego_artykulu;
end;
return p;
cmmgno5e10bwqb93o662id91h6zyq9g
Sosy/Sos bolzański
0
63670
546443
2026-06-11T17:29:54Z
EdytaT
2664
Utworzono nową stronę " {{Podrozdział|[[Sosy]]|Sos bolzański}} == Sos bolzański (Sauce de Bolzano, salsa di Bolzano) == * Sos z Bolzano to kremowy sos typu [[Sosy/Winegret|winegret]], będący odmianą słynnego [[Sosy/Sos holenderski|sosu holenderskiego]] z Południowego Tyrolu. == Kompozycje smakowe == * Klasycznie: na bazie drobno posiekanych ugotowanych na twardo żółtek, [[Zioła i przyprawy/Olej|oleju]], [[Zioła i przyprawy/Ocet|ocet]], bulionu (lub wody) i Zioła i przyp…"
546443
wikitext
text/x-wiki
{{Podrozdział|[[Sosy]]|Sos bolzański}}
== Sos bolzański (Sauce de Bolzano, salsa di Bolzano) ==
* Sos z Bolzano to kremowy sos typu [[Sosy/Winegret|winegret]], będący odmianą słynnego [[Sosy/Sos holenderski|sosu holenderskiego]] z Południowego Tyrolu.
== Kompozycje smakowe ==
* Klasycznie: na bazie drobno posiekanych ugotowanych na twardo żółtek, [[Zioła i przyprawy/Olej|oleju]], [[Zioła i przyprawy/Ocet|ocet]], bulionu (lub wody) i [[Zioła i przyprawy/Musztarda|musztardy]].
* Często z dodatkiem posiekanego [[Zioła i przyprawy/Szczypiorek|szczypiorku]].
== Przepisy ==
* 2 jajka ugotuj 7 minut na twardo, potem ostudź i oddziel żółtka od białek.
* Żółtka wymieszaj z 2 łyżeczkami musztardy i 2 łyżkami gorącej wody.
* Dodaj [[Zioła i przyprawy/Sól|sól]] i [[Zioła i przyprawy/Pieprz|pieprz]] do smaku.
* Całość dokładnie wymieszaj z 150 ml (10 łyżek) [[Zioła i przyprawy/Olej|oleju]].
* Dopraw 3 łyżeczkami [[Zioła i przyprawy/Ocet|białego octu winnego]], wymieszaj ze [[Zioła i przyprawy/Szczypiorek|szczypiorkiem]] i dodaj drobno posiekane białko.
== Potrawy ==
* Warzywa
:* Szparagi
== Przypisy ==
{{Przypisy}}
{{BrClear}}
<noinclude>{{Wolumin}}</noinclude>
pqh3u5o1ud71tr8mycly4m372rb7vbd