Wikibooks
plwikibooks
https://pl.wikibooks.org/wiki/Wikibooks:Strona_g%C5%82%C3%B3wna
MediaWiki 1.47.0-wmf.19
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
Wikibooks:Administratorzy
4
13
556428
551166
2026-09-15T01:18:16Z
Persino
2851
556428
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysops, system operators i admins}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania MediaWiki.
== Lista administratorów polskich Wikibooks ==
Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}.
# {{lż|Pavroo}}
# {{lż|Persino}}
# {{lż|Igor123121}}
=== Byli administratorzy ===
# {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 -->
# {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 -->
# {{lż|Karol Karolus}}
# {{lż|Kj}}
# {{lż|Lethern}}
# {{lż|Mellonedain}}
# {{lż|MonteChristof}}
# {{lż|Panterka}}
# {{lż|Piotr}}
# {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 -->
# {{lż|Sp5uhe}}
# {{lż|Warszk}} (biurokrata)
# {{lż|Wojciech Pędzich}}
== Zobacz też ==
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
ih3ad3ui4qcsczc9u6qcj9f0dwzosin
556431
556428
2026-09-15T01:21:26Z
Persino
2851
556431
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysops, system operators i admins}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}.
== Lista administratorów polskich Wikibooks ==
Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}.
# {{lż|Pavroo}}
# {{lż|Persino}}
# {{lż|Igor123121}}
=== Byli administratorzy ===
# {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 -->
# {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 -->
# {{lż|Karol Karolus}}
# {{lż|Kj}}
# {{lż|Lethern}}
# {{lż|Mellonedain}}
# {{lż|MonteChristof}}
# {{lż|Panterka}}
# {{lż|Piotr}}
# {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 -->
# {{lż|Sp5uhe}}
# {{lż|Warszk}} (biurokrata)
# {{lż|Wojciech Pędzich}}
== Zobacz też ==
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
ls9rdpt64pntgzny3kcc8munwgb0k6t
556432
556431
2026-09-15T01:30:26Z
Persino
2851
556432
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}}, z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}.
== Lista administratorów polskich Wikibooks ==
Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}.
# {{lż|Pavroo}}
# {{lż|Persino}}
# {{lż|Igor123121}}
=== Byli administratorzy ===
# {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 -->
# {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 -->
# {{lż|Karol Karolus}}
# {{lż|Kj}}
# {{lż|Lethern}}
# {{lż|Mellonedain}}
# {{lż|MonteChristof}}
# {{lż|Panterka}}
# {{lż|Piotr}}
# {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 -->
# {{lż|Sp5uhe}}
# {{lż|Warszk}} (biurokrata)
# {{lż|Wojciech Pędzich}}
== Zobacz też ==
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
i56e2tbc9fvf7aaxba4ho1od1s00zdq
556433
556432
2026-09-15T01:32:12Z
Persino
2851
556433
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}.
== Lista administratorów polskich Wikibooks ==
Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}.
# {{lż|Pavroo}}
# {{lż|Persino}}
# {{lż|Igor123121}}
=== Byli administratorzy ===
# {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 -->
# {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 -->
# {{lż|Karol Karolus}}
# {{lż|Kj}}
# {{lż|Lethern}}
# {{lż|Mellonedain}}
# {{lż|MonteChristof}}
# {{lż|Panterka}}
# {{lż|Piotr}}
# {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 -->
# {{lż|Sp5uhe}}
# {{lż|Warszk}} (biurokrata)
# {{lż|Wojciech Pędzich}}
== Zobacz też ==
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
lbqcd8e662qcf0kixerug7zdnkr78pt
556436
556433
2026-09-15T01:36:46Z
Persino
2851
/* Zobacz też */
556436
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Administrators|sysop}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora zasobów'' (ang. ''sysop rights''). Mogą cofać zmiany dokonane przez innych użytkowników, blokować innym możliwość edycji, blokować możliwość edycji wybranych stron oraz edytować interfejs i niektóre ustawienia oprogramowania {{NS|k=mw|l=tak}}.
== Lista administratorów polskich Wikibooks ==
Administratorzy są wyróżnieni słowami ''{{lmc|MyLanguage/Administrators|Administrator}}'' na {{lc|Administratorzy|liście użytkowników}}.
# {{lż|Pavroo}}
# {{lż|Persino}}
# {{lż|Igor123121}}
=== Byli administratorzy ===
# {{lż|Beau}}<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=20632496 -->
# {{lż|Derbeth}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=22789688 -->
# {{lż|Karol Karolus}}
# {{lż|Kj}}
# {{lż|Lethern}}
# {{lż|Mellonedain}}
# {{lż|MonteChristof}}
# {{lż|Panterka}}
# {{lż|Piotr}}
# {{lż|Reytan}} (biurokrata)<!-- https://meta.wikimedia.org/w/index.php?title=Special:Log&logid=9209344 -->
# {{lż|Sp5uhe}}
# {{lż|Warszk}} (biurokrata)
# {{lż|Wojciech Pędzich}}
== Zobacz też ==
{{Wikibooks:Administratorzy/Zobacz też}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
dfxikle1thvwqixkdhkvu4dnugeivtb
Kategoria:Kategorie podręcznikowe
14
1740
556455
552244
2026-09-15T02:45:32Z
Persino
2851
556455
wikitext
text/x-wiki
{{Opis kategorii
| grupuje = Grupuje strony i kategorie podręcznikowe na polskim {{NS|pk=mj|l=tak|w=tak}}. Jest to główna kategoria dotycząca podręczników.
| uwagi = Korzystając z linków poniżej możesz dotrzeć do dowolnego miejsca, dotyczącej podręczników, w drzewie tej kategorii naszego serwisu.
| liczba stron =
| osobne grupują =
| główne strony =
| portal =
| wikiprojekt =
| zobacz =
| szablony =
| zgłaszające =
| linkujące =
| związane =
| zobacz opisy =
| dokumentacje =
| opis stron =
| przykłady =
| dalsze pozycje =
| zmiany =
| nawigacja = {{Autonawigacja|Pomoc:Spis treści}}
| siostrzane =
}}
{{Kategoria|Kategorie}}
n33783augq7s28qe269ksk25ktwfdw5
Szablon:Układ autonawigacji
10
5342
556457
501307
2026-09-15T02:55:52Z
Persino
2851
556457
wikitext
text/x-wiki
<includeonly><!--
-->{{#if:{{#invoke:Parametry|Not|{{{automat manualny|}}}}}<!--
-->|{{ConfDomyślna
| klucz = {{{krok}}}
| wyjście = {{ConfDomyślna
| klucz = {{{krok}}}
| wyjście =
| spis treści = {{Jeśli niepuste|{{#if:{{{spis treści|}}}|{{#invoke:Techniczne|PrzeszkałćAdresWzględnyStronyNaBezwzględny
| 1 = {{{spis treści}}}
| 2 = {{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}}
| wyspecjalizowana = tak
}}
}}|{{#invoke:Ramka|Szablon|Nazwa=AktualnaKsiążka|parametry funkcji modułu pudełek=tak}}
}}
}}
| poprz = {{#invoke:Ramka|Szablon|Nazwa=LinkPoprzedniArtykuł|parametry funkcji modułu pudełek=tak}}
| nast = {{#invoke:Ramka|Szablon|Nazwa=LinkNastępnyArtykuł|parametry funkcji modułu pudełek=tak}}
}}<!--
-->|{{#invoke:Ramka|Rozwiń|{{((}}ConfDomyślna{{!}}klucz{{=}}{{(((}}krok{{)))}}:{{((}}FULLPAGENAME{{))}}{{!}}
wyjście{{=}}{{((}}ConfDomyślna{{!}}klucz{{=}}{{(((}}krok{{)))}}{{!}}wyjście{{=}}{{!}}spis treści{{=}}{{(((}}spis treści{{)))}}{{))}}{{!}}
{{#invoke:Ramka|PowtarzajOdDo
| start = 1
| koniec = {{#invoke:Parametry|LiczbaElementówNumerowanychSzablonu}}
| krok = 2
| nie rozwiń = tak
| 1 = poprz:{{((}}#if:tak{{!}}{{(((}}{{((}}_{{))}}{{)))}}{{))}}{{=}}{{((}}#ifeq:{{((}}_{{))}}{{!}}{{((}}start{{))}}{{!}}{{!}}{{!((}}:{{((}}#if:tak{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}-2{{))}}{{)))}}{{))}}{{!}}{{((}}Jeśli niepuste{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}-1{{))}}{{)))}}{{!}}{{((}}Zastąp{{!}}ciąg{{=}}{{(((}} {{((}}#expr:{{((}}_{{))}}-2{{))}}{{)))}}{{!}}wzór{{=}}^([^/]*/){{!}}zamień{{=}}{{))}}{{))}}{{))!}}{{))}}{{!}}
nast:{{((}}#if:tak{{!}}{{(((}}{{((}}_{{))}}{{)))}}{{))}}{{=}}{{((}}#ifeq:{{((}}_{{))}}{{!}}{{((}}#expr:{{((}}koniec{{))}}-1{{))}}{{!}}{{!}}{{!((}}:{{((}}#if:tak{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}+2{{))}}{{)))}}{{))}}{{!}}{{((}}Jeśli niepuste{{!}}{{(((}} {{((}}#expr:{{((}}_{{))}}+3{{))}}{{)))}}{{!}}{{((}}Zastąp{{!}}ciąg{{=}}{{(((}} {{((}}#expr:{{((}}_{{))}}+2{{))}}{{)))}}{{!}}wzór{{=}}^([^/]*/){{!}}zamień{{=}}{{))}}{{))}}{{))!}}{{))}}{{!}}
}}
{{))}}}}}}</includeonly><noinclude>{{Dokumentacja|Szablon:Autonawigacja/opis}}</noinclude>
5cly55l1x0dzxi8tc6wgh5wh3jzp5d6
Wikibooks:Biurokraci
4
22610
556439
519762
2026-09-15T01:38:27Z
Persino
2851
/* Zobacz też */
556439
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Biurokraci}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Obecnie nie mamy żadnych aktywnych biurokratów. Uprawnienia biurokraty na wszystkich projektach posiadają {{lr|Stewardzi|stewardzi}}. Jeżeli potrzebujesz czegoś wymagającego uprawnień biurokraty, postępuj zgodnie z instrukcjami na stronie o stewardach.'''
'''Biurokrata''' to użytkownik Wikibooks mający możliwość '''nadawania uprawnień''' {{lr|Administratorzy|administratora}}, biurokraty i {{lr|Boty|bota}} innym użytkownikom. Nie ma on możliwości odbierania uprawnień administratora i biurokraty – to leży w gestii {{lr|Stewardzi|stewardów}}; ma taką możliwość jedynie w stosunku do botów.
Biurokraci korzystają z tych uprawnień za zgodą społeczności, w oparciu o wynik głosowania na stronie {{lr|Przyznawanie uprawnień}} i w zgodzie z regulaminem na niej przedstawionym. '''W chwili obecnej aby otrzymać status biurokraty przez stewarda, wymagane jest 20 głosów za.'''
Należy pamiętać, że, podobnie jak status {{lr|Administratorzy|administratora}}, funkcja biurokraty jest czysto administracyjna i nie daje żadnych dodatkowych uprawnień, jeśli chodzi o zawartość merytoryczną projektu.
== Biurokraci polskich Wikibooks ==
''brak''
Zawsze aktualna lista: {{lc|Użytkownicy/bureaucrat|użytkownicy w grupie Biurokrata}}
=== Lista byłych biurokratów ===
# {{lż|Derbeth}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Rejestr|c=logid=3591|n=6 września 2006}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=22789688|n=16 lipca 2017}}}})
# {{lż|Reytan}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=1056|n=3 listopada 2005}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=9209344|n=25 lipca 2014}}}})
# {{lż|Warszk}} ({{Span|klasa=plainlinks|{{lz|s=Specjalna:Rejestr|c=logid=2599|n=16 czerwca 2006}}}} – {{Span|klasa=plainlinks|{{lz|s=Specjalna:Log|c=logid=60988|n=8 stycznia 2007}}}})
== Zobacz też ==
{{Wikibooks:Administratorzy/Zobacz też}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
7offmzckbceztg3daw5kiqocbmflm70
Wikibooks:Stewardzi
4
22620
556440
552160
2026-09-15T01:38:54Z
Persino
2851
/* Zobacz też */
556440
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Stewardzi}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Steward''' to osoba posiadająca dostęp do wszelkich narzędzi, we wszystkich projektach {{lpg|Wikimedia Foundation|Fundacji Wikimedia}}. Do głównych zadań stewardów należy realizowane woli społeczności danego projektu (np. nadanie uprawnienia administratora wskazanemu użytkownikowi), działanie w nagłych wypadkach oraz interweniowanie w przypadkach wieloprojektowych wandalizmów.
Stewardzi mają m.in. możliwość:
* nadawania i odbierania użytkownikom uprawnień np. {{lr|Administratorzy|administratora}} lub {{lr|Biurokraci|biurokraty}} w dowolnym projekcie Wikimedia
* nadawania (po uprzednim spełnieniu wymogu weryfikacji w Fundacji Wikimedia) i odbierania uprawnień {{lmr|CheckUser|CheckUsera}} i Oversighta
* zarządzania {{lpp|Konto uniwersalne|kontami globalnymi}} (blokowanie, ukrywanie, wyłączanie, nadawanie globalnego uprawnienia)
* sprawdzania adresu IP dowolnego użytkownika
* interweniowania za pomocą uprawnienia Oversight
Do zgłaszania próśb o przyznanie lub odebranie uprawnień służy strona {{lmg|Steward requests/Permissions}} na {{NS|l=tak|k=m}}. Zmiany uprawnień dokonywane przez stewardów widoczne są w {{lmc|Log/rights|rejestrze na Meta}}.
Stewardzi są wybierani przez ogół społeczności wszystkich projektów Wikimedia.
Istnieje szereg wytycznych, według których powinni postępować stewardzi, zawartych na stronie {{lmg|Steward policies|Steward policies}} na {{NS|l=tak|k=m}}. M.in. Stewardzi powinni unikać konfliktu interesów, np. nadawania/odbierania szczególnych uprawnień w projektach, z których sami się wywodzą (nie dotyczy oczywistych sytuacji, takich jak odebranie samemu sobie uprawnień lub awaryjnego pozbawienia uprawnień określonego konta).
Pełna lista stewardów znajduje się na stronie '''{{lmg|Stewards}} na Meta.
== Zobacz też ==
{{Wikibooks:Administratorzy/Zobacz też}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
1ot20di5yush34asg3d9menva47zvip
Wikibooks:Bar/Archiwum
4
23999
556460
539152
2026-09-15T03:15:08Z
Persino
2851
556460
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
omnscuwuxwuma5zotl5c0vjhefw7zw1
556466
556460
2026-09-15T03:34:36Z
Persino
2851
556466
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;box-sizing:border-box;
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
esa6t891n83gaxxvgcdfr1pydga97pk
556469
556466
2026-09-15T03:38:02Z
Persino
2851
556469
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| klasa = width:100%;margin-left:0;margin-right:0;box-sizing:border-box;
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
b22u00jg5t3sxa2swvfypryt8dnotr6
556470
556469
2026-09-15T03:38:32Z
Persino
2851
556470
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| klasa = szerokość
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
jmu1p90x72nzxht2nhrjc30bakgupny
556535
556470
2026-09-15T09:31:57Z
Persino
2851
556535
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| klasa = szerokość
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
{{SpanClear}}
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
su6pjsiuaqaokkxa4vianmwho4y3vsc
556536
556535
2026-09-15T09:33:29Z
Persino
2851
556536
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| klasa = szerokość
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis =
{{Span|{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
09r0u8tyqojuttmcze6ud4rka5yaehn
556540
556536
2026-09-15T09:40:20Z
Persino
2851
556540
wikitext
text/x-wiki
{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|<!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum rozmów pomiędzy użytkownikami {{lr2|Bar}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Bar|kawiarenki}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar|sortuj spacją=tak}}<!--
-->|{{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Bar}}<!--
-->}}<!--
-->{{Tabela nawigacyjna
| klasa = szerokość
| funkcja = {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|PokazanaWikitabelowaListaMenu|UkrytaWikitabelowaListaMenu}}
| tytuł = Wykaz {{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum|stron zbiorczych|{{lr|Bar/Archiwum|stron zbiorczych}}}} dla poszczególnych lat kawiarenki, czyli: {{lr2|Bar}} ({{lr|WB|skrót}}: {{lb|BAR}})
| spis = {{P|
{{sr}} —
{{sr|1|p=Archiwum|archiwum 1}} (21 lut 2005 - 17 sty 2006) —
{{sr|2|p=Archiwum|archiwum 2}} (20 mar 2006 - 15 lut 2007) —
{{sr|3|p=Archiwum|archiwum 3}} (9 wrz 2006 - 7 cze 2008) —
{{sr|4|p=Archiwum|archiwum 4}} (14 cze 2008 - 11 cze 2008) —
{{sr|5|p=Archiwum|archiwum 5}} (18 lut 2008 - 17 lut 2009) —
{{sr|6|p=Archiwum|archiwum 6}} (19 lut 2010 - 31 maj 2010) —
{{sr|7|p=Archiwum|archiwum 7}} (1 cze 2010 - 22 lis 2010) —
{{sr|8|p=Archiwum|archiwum 8}} (4 kwi 2006 - 10 gru 2010) —
{{sr|9|p=Archiwum|archiwum 9}} (27 gru 2010 - 26 gru 2011) -
{{sr|10|p=Archiwum|archiwum 10}} (7 sty 2012 - 8 sty 2013) -
{{sr|11|p=Archiwum|archiwum 11}} (19 sty 2013 - 24 lis 2013) -
{{sr|12|p=Archiwum|archiwum 12}} (7 maj 2014 - 12 gru 2014) -
{{sr|13|p=Archiwum|archiwum 13}} (5 lut 2015 - 25 gru 2015) -
{{sr|14|p=Archiwum|archiwum 14}} (17 lut 2016 - 14 gru 2016) -
{{sr|15|p=Archiwum|archiwum 15}} (15 mar 2017 - 20 lis 2017) -
{{sr|16|p=Archiwum|archiwum 16}} (2 mar 2018 - 27 gru 2018) -
{{sr|17|p=Archiwum|archiwum 17}} (14 sty 2019 - 4 lis 2019) -
{{sr|18|p=Archiwum|archiwum 18}} (7 sty 2020 - 11 gru 2020) -
{{sr|19|p=Archiwum|archiwum 19}} (18 sty 2021 - 27 lis 2021) -
{{sr|20|p=Archiwum|archiwum 20}} (9 sty 2022 - 15 gru 2022) -
{{sr|21|p=Archiwum|archiwum 21}} (30 gru 2022 - 27 maj 2023) -
{{sr|22|p=Archiwum|archiwum 22}} (28 cze 2023 - 21 lis 2024) -
{{sr|23|p=Archiwum|archiwum 23}} (16 sty 2025 - 28 gru 2025)
}}
}}{{#ifeq:{{FULLPAGENAME}}|{{Ns:Project}}:Bar/Archiwum||{{Spis treści}}}}
8q8vqaxoqjy1gzockqain23mpcfk64x
Szablon:Opis kategorii
10
24591
556453
551155
2026-09-15T02:41:03Z
Persino
2851
556453
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=Opis kategorii/start
| czy kategorie dla kategorii = {{#invoke:Kategorie|CzyKategoriaDlaKategorii}}
| wiki-commons = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=commons}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=commons}}
}}
| wiki-wikt = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=wikt}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=wikt}}
}}
| wiki-s = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=s}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=s}}
}}
| wiki-q = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=q}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=q}}
}}
| wiki-n = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=n}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=n}}
}}
| wiki-w = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=w}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=w}}
}}
| wiki-b = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=b}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=b}}
}}
| wiki-voy = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=voy}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=voy}}
}}
| wiki-species = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=wikispecies}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=wikispecies}}
}}
| wiki-wikiwerek = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=en|kod projektu=wikiversity}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=en|kod projektu=wikiversity}}
}}
| wiki-meta = {{Jeśli niepuste
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|b}}}|kod języka=pl|kod projektu=meta}}
|{{#invoke:wiki|WikidaneOdpowiednikStrony|wyspecjalizowana=tak|nazwa strony={{#invoke:Pudełko|Pełna nazwa jednostki}}|kod języka bazy={{{kod języka bazy|pl}}}|kod projektu bazy={{{kod projektu bazy|w}}}|kod języka=pl|kod projektu=meta}}
}}
| wiki-dane = {{Jeśli niepuste
|{{#invoke:Wikidane|id|{{#invoke:Pudełko|Pełna nazwa jednostki}}|idwiki=plwikibooks}}
|{{#invoke:Wikidane|id|{{#invoke:Pudełko|Pełna nazwa jednostki}}|idwiki=plwiki}}
}}
| specjalne = {{#switch:{{#invoke:Pudełko|Pełna nazwa jednostki}}|{{ns:Category}}:Kategorie|{{Ns:Category}}:Metastrony Wikibooks|{{Ns:Category}}:Kategorie dla kategorii=tak}}
}}<!--
-->{{#if:{{{bez kategorii|}}}||<!--
-->{{Kategoria|Strony kategorii używające szablonu Opis kategorii do opisu}}<!--
-->}}<!--
-->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry|=problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}}
| grupuje = !
| uwagi = !
| liczba stron = !
| osobne grupują = !
| główne strony = !
| portal = !
| wikiprojekt = !
| zobacz = !
| szablony = !
| zgłaszające = !
| linkujące = !
| związane = !
| zobacz opisy = !
| dokumentacje = !
| opis stron = !
| przykłady = !
| dalsze pozycje = !
| zmiany = !
| nawigacja =
| siostrzane = !
| bez ramki =
| bez nagłówka =
| ze stopką =
| bez kolumn =
| liczba kolumn =
| minimalna szerokość kolumn =
| minimalna główna szerokość =
| bez czcionki =
| nazwa kategorii =
| kod języka bazy =
| kod projektu bazy =
}}}}</includeonly><noinclude>{{Dokumentacja}}{{Kategoria|Strony kategorii używające szablonu Opis kategorii do opisu|sortuj spacją=tak}}</noinclude>
eah2dl09fcieyuqh0iz9l1svuyv5gux
Moduł:Cytuj
828
31187
556502
515370
2026-09-15T06:52:07Z
Persino
2851
556502
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
return {
auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end,
custom = function(frame,pf)
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and frame.getParent then
local template = mw.title.new( frame:getParent():getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(pf or frame, mode, traceCategory, null)
end,
custom2=function(frame)
return custom(frame,frame:getParent());
end,
}
atvurmbumr5ijkr8zodkoaituoc1f79
556504
556502
2026-09-15T06:54:45Z
Persino
2851
556504
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
local p={};
p.auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end;
p.custom = function(frame,pf)
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and frame.getParent then
local template = mw.title.new( frame:getParent():getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(pf or frame, mode, traceCategory, null)
end;
p.custom2=function(frame)
return custom(frame,frame:getParent());
end;
return p;
fiyyly6l6yy1s531ob9akpsvfcqqt2y
556505
556504
2026-09-15T06:55:32Z
Persino
2851
556505
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
local p={};
p.auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end;
p.custom = function(frame,pf)
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and frame.getParent then
local template = mw.title.new( frame:getParent():getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(pf or frame, mode, traceCategory, null)
end;
p.custom2=function(frame)
return p.custom(frame,frame:getParent());
end;
return p;
nhlyfelztwe0l7xz7orkx1m8jeom6hk
556506
556505
2026-09-15T07:19:36Z
Persino
2851
556506
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
local p={};
p.auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end;
p.custom = function(frame,pf)
frame=pf or frame;
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and (pf or frame.getParent) then
local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu rodzica"];
local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil;
local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(frame, mode, traceCategory, null)
end;
p.custom2=function(frame)
return p.custom(frame,frame:getParent());
end;
return p;
reu37cx096avegu5ta40zj3seaqq906
556519
556506
2026-09-15T07:50:06Z
Persino
2851
556519
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
local p={};
p.auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end;
p.custom = function(frame,pf)
frame=pf or frame;
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and (pf or frame.getParent) then
local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu przodka"] or (pf or frame:getParent()).args["nazwa szablonu rodzica"];
local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil;
local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(frame, mode, traceCategory, null)
end;
p.custom2=function(frame)
return p.custom(frame,frame:getParent());
end;
return p;
5hlruf5zuebdw7w02ex2p6fh4sw856f
556532
556519
2026-09-15T08:55:41Z
Persino
2851
556532
Scribunto
text/plain
local resources = mw.loadData("Moduł:Cytuj/dane")
local access = mw.loadData("Moduł:Cytuj/dostęp")
local function createCategories()
local result = {}
local mt = {
__index = function(t,k)
return resources.categories[k]
or resources.categories.check
end,
__newindex = function(t,k,v)
error("Kategorie są tylko do odczytu")
end,
}
setmetatable(result, mt)
return result
end
local categories = createCategories()
local function killLinkInterwiki(value)
-- usuń z treści wikilinki generowane przez szablon link-interwiki
-- szablon oznacza jako podejrzane wartości z tekstem "Wikipedia"
local result, count = string.gsub(value, "%[%[:d:Q[0-9]+#sitelinks%-wikipedia|%(inne języki%)%]%]", "")
return result
end
local function softNoWiki(text)
local result, count = string.gsub(text, "['%[%]{|}\"]", { ["\""] = """, ["'"] = "'", ["["] = "[", ["]"] = "]", ["{"] = "{", ["|"] = "|", ["}"] = "}"})
-- przywróc [[szablon:J]] z kursywą tak/nie
result, count = string.gsub(result, "<span +style="font%-style: ?([a-z]+);?" +lang="([a-z%-]+)" *>", "<span style=\"font-style: %1;\" lang=\"%2\">")
-- przywróc [[szablon:J]] goły
result, count = string.gsub(result, "<span +lang="([a-z%-]+)" *>", "<span lang=\"%1\">")
-- przywróć nowiki
result, count = string.gsub(result, "\127'"`UNIQ%-%-(nowiki%-[0-9A-F]+)%-QINU`"'\127", "\127'\"`UNIQ--%1-QINU`\"'\127")
return result
end
local function escapeUrl(url)
local result, count = string.gsub(url, "[ '%[%]\"]", { [" "] = "%20", ["'"] = "%27", ["["] = "%5B", ["]"] = "%5D", ["\""] = "%22"})
return result
end
local function plainText(text)
local result, count = string.gsub(text, "</?[Ss][Pp][Aa][Nn][^>]*>", "")
return result
end
local function first(data)
return type(data) == "table" and data[1] or data
end
local function determineMode(p)
local detector = {}
local count = 0
for i, v in ipairs(resources.modes) do
detector[i] = v
count = count + 1
end
detector[1] = false -- skip 'auto'
count = count - 1
for k, v in pairs(resources.params) do
local arg = p.args[v.name]
for i, w in ipairs(v.used) do
if not w and arg then
-- unexpected argument
if detector[i] then
detector[i] = false
count = count - 1
if count == 0 then
-- the mode cannot be determined
break
end
end
end
end
if count == 0 then
-- the mode cannot be determined
break
end
end
if count == 1 then
for i, v in ipairs(detector) do
if detector[i] then
return i, resources.COinS[i]
end
end
end
if detector[4] -- web?
and p.args[resources.params.url.name]
then
-- promote to web but without COinS
return 4, false
end
for i, v in ipairs(detector) do
if detector[i] then
-- if type is determined more than once
-- use only the first one without COinS
return i, false
end
end
-- in case nothing is selected
-- use the auto mode as default fallback
return 1
end
local authorMetatable = {}
local authorMethodtable = {}
authorMetatable.__index = authorMethodtable
local function checkPatterns(author, prefixes, suffixes)
if author.exact then
return false
end
if author.prefix and prefixes then
for _, v in ipairs(prefixes) do
if mw.ustring.match(author.prefix, v) then
return true
end
end
end
if author.suffix and suffixes then
for _, v in ipairs(suffixes) do
if mw.ustring.match(author.suffix, v) then
return true
end
end
end
return false
end
authorMethodtable.format = function(data, namefirst)
if data.exact then
return data.exact
end
if namefirst and data.familynamefirst then
namefirst = false
end
local builder = mw.html.create()
local name = data.name and (#data.name > 0)
local initials = data.nameinitials and (#data.nameinitials > 0)
local namehint = nil
if name and initials and (data.name ~= data.nameinitials) then
namehint = data.name
end
if not data.familynamefirst and (name or initials) then
local before = namefirst and builder or builder:tag("span"):addClass("cite-name-before")
if name then
before:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
before:tag("span"):css("display", "none"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
before:wikitext(" ")
end
builder:tag("span"):addClass("cite-lastname"):wikitext(softNoWiki(data.lastname))
if not namefirst and (name or initials) then
local after = data.familynamefirst and builder or builder:tag("span"):css("display", "none"):addClass("cite-name-after")
after:wikitext(" ")
if name then
after:tag("span"):addClass("cite-name-full"):wikitext(softNoWiki(data.name))
end
if initials then
after:tag("span"):addClass("cite-name-initials"):attr("title", namehint):wikitext(softNoWiki(data.nameinitials))
end
if data.js then
after:wikitext(",")
end
end
if data.js then
builder:wikitext(" ", data.js)
end
return tostring(builder)
end
authorMethodtable.towiki = function(data)
if data.exact then
return data.exact
end
local result = {}
local name = data.name and (#data.name > 0)
if not data.familynamefirst and name then
table.insert(result,softNoWiki(data.name))
table.insert(result, " ")
end
table.insert(result, softNoWiki(data.lastname))
if data.familynamefirst and name then
table.insert(result, " ")
table.insert(result, softNoWiki(data.name))
end
return table.concat(result)
end
local function makeInitials(name)
local nameinitials = mw.ustring.gsub(name, "(%w[Hh]?)[%w]*%.?([%s%-–—]?)%s*", "%1. ") -- zostaw początki słów (jedna litera + opcjonalne następujące 'h')
nameinitials = mw.ustring.gsub(nameinitials, "%f[%w]%l%.%s", "") -- usuń inicjały z małych liter
nameinitials = mw.ustring.gsub(nameinitials, "([^C%W])[Hh]%.?%s", "%1. ") -- usuń drugie 'h' jeśli nie zaczyna się na 'C'
nameinitials = mw.ustring.gsub(nameinitials, "(%u[Hh]?)[%.%s]*", "%1.") -- dodaj brakujące kropki i usuń zbędne spacje
return mw.text.trim(nameinitials)
end
local function fixInitials(name)
local result, _ = mw.ustring.gsub(name, "^(%uh?)%.?%s+(%uh?)%.", "%1.%2.") -- popraw inicjały na początku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw inicjały w środku
result, _ = mw.ustring.gsub(result, "%f[%a](%uh?)%.%s+(%uh?)%.", "%1.%2.") -- popraw kolejne inicjały w środku
return result
end
local function isInQuotes(text)
if (string.len(text) < 2) then
return false;
end
local tstart = text:sub(1, 1);
if (tstart ~= '"') then
return false;
end
local tend = text:sub(-1);
if (tend ~= '"') then
return false;
end
return true;
end
local function parseAuthor(author)
local result = {}
if string.match(author, "\127") then -- wpisy z <nowiki> nie są analizowane
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local author = mw.text.trim(author)
local a = string.gsub(author, "\\[\\%.:]", { ["\\\\"]="\\", ["\\."]=",", ["\\:"]=";", })
if a ~= author then
result.exact = a
setmetatable(result, authorMetatable)
return result
end
if resources.exactAuthors[author] then
result.exact = author
setmetatable(result, authorMetatable)
return result
end
local exactName = mw.ustring.match(author, "^%s*%*%s*(.*)$")
if exactName then
result.exact = mw.text.trim(exactName)
if #result.exact == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local prefix0, link, description, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%|(.-)%]%](.*)$")
if prefix0 then
result.link = link
author = description
else
prefix0, link, suffix0 = mw.ustring.match(author, "^(.-)%[%[(.-)%]%](.*)$")
if prefix0 then
author = link
result.link = link
else
prefix0 = ""
suffix0 = ""
end
end
local prefix1, rest = mw.ustring.match(author, "^([%l%p%s]+)(.+)$")
if not prefix1 then
rest = author
prefix1 = ""
end
local prefix = mw.text.trim(prefix0.." "..prefix1)
if #prefix > 0 then
if mw.ustring.sub(prefix, -1) == "#" then
result.familynamefirst = true
prefix = mw.text.trim(mw.ustring.match(prefix, "^(.-)#$"))
end
if #prefix > 0 then
result.prefix = mw.ustring.gsub(prefix, "%s+", " ") -- collapse spaces
end
end
local rest2, suffix = mw.ustring.match(rest, "^([%w%-%.%s]-)%s([%l%p%s]-)$")
if not suffix then
rest2 = rest
suffix = ""
end
suffix = mw.text.trim(suffix.." "..suffix0)
if #suffix > 0 then
result.suffix = mw.ustring.gsub(suffix, "%s+", " ") -- collapse spaces
suffix = " "..result.suffix
for i, v in ipairs(resources.js) do
if mw.ustring.match(suffix, v[1]) then
result.suffix = mw.text.trim(mw.ustring.gsub(suffix, v[1], ""))
result.js = v[2]
break
end
end
else
for i, v in ipairs(resources.js) do
if mw.ustring.match(rest2, v[1]) then
rest2 = mw.text.trim(mw.ustring.gsub(rest2, v[1], ""))
result.js = v[2]
break
end
end
end
local lastname, name = mw.ustring.match(rest2, "%s*([^,]-)%s*,%s*(.-)%s*$")
if not lastname then
if result.familynamefirst then
lastname, name = mw.ustring.match(rest2, "%s*(%u[%l%d%p]*)%s+(.-)%s*$")
else
local prefix2
name, lastname, prefix2 = mw.ustring.match(rest2, "%s*(.-)%s+((%l[%l%p]%l?)%u[%w%p]-)%s*$")
if not resources.lastnamePrefixes[prefix2] then
name, lastname = mw.ustring.match(rest2, "%s*(.-)%s+(%u[%w%p]-)%s*$")
end
end
elseif resources.lastnamePrefixes[prefix1] then
lastname = prefix1 .. lastname
elseif resources.lastnamePrefixes[prefix1] == false then
name = name.." "..mw.text.trim(prefix1)
end
if not lastname then
result.lastname = mw.text.trim(rest2)
else
result.name = fixInitials(name)
result.lastname = lastname
result.nameinitials = makeInitials(name)
end
if #result.lastname == 0 then
return nil
end
setmetatable(result, authorMetatable)
return result
end
local function parseDate(date, month, year, patch)
local result = {}
-- parse full date
local y, m, d = false, false, false
y, m, d = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)[%-%s%./](%d%d?)")
if y and patch and (date == (y.."-01-01")) then
result.year = tonumber(y)
result.month = false
result.day = false
return result, true
end
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)[%-%s%.](%d%d?)[%-%s%.](%d%d%d%d)")
if not y then
y, m, d = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)%s*(%d%d?)")
if not y then
d, m, y = mw.ustring.match(date, "(%d%d?)%s*(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
d = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
d = tonumber(d)
end
if y and ((d > 31) or (m > 12) or (d < 1) or (m < 1)) then
y = false
m = false
d = false
elseif y then
result.year = y
result.month = m
result.day = d
return result, false
end
-- parse year and month
y, m = mw.ustring.match(date, "(%d%d%d%d)[%-%s%./](%d%d?)")
if not y then
m, y = mw.ustring.match(date, "(%d%d?)[%-%s%./](%d%d%d%d)")
if not y then
y, m = mw.ustring.match(date, "(%d%d%d%d)%s*(%w+)")
if not y then
m, y = mw.ustring.match(date, "(%w+)%s*(%d%d%d%d)")
end
if m then
m = resources.monthparser[mw.ustring.lower(m)]
if not m then
y = false
m = false
end
end
end
end
if y then
y = tonumber(y)
m = tonumber(m)
end
if y and ((m > 12) or (m < 1)) then
y = false
m = false
elseif y then
result.year = y
result.month = m
return result, false
end
-- try any method to extract year or month
if not y then
y = mw.ustring.match(date, "[%s%p%-–]?(%d%d%d%d)[%s%p%-–]?")
if y then
y = tonumber(y)
end
if y then
result.year = y
end
end
if y then
if not m then
m = mw.ustring.match(date, "[%s%p%-–]?(%w+)[%s%p%-–]?")
if m then
m = resources.monthparser[mw.ustring.lower(m)]
end
if m then
result.month = m
end
end
else
-- reset only month
result.month = nil
end
if y then
return result, false
end
end
local function collectAuthors(author, checkForAltFormat)
if not author then
return
end
-- Obsługa cudzysłowów w autorach (treat quoted authors as-is)
if (isInQuotes(mw.text.trim(author))) then
local strippedAuthor = mw.text.trim(author, '"\t\r\n\f ')
return { items = {strippedAuthor}, more=false, comma=false, etal=false, separator="" }
end
function findUtf8CharAt(text, at)
local back = false
if at < 0 then
at = #text + at + 1
back = true
end
while at > 1 do
local b = string.byte(text, at, at)
if (b < 128) or (b >= 192) then
break
end
at = at - 1
end
return back and at - #text - 1 or at
end
local etal = false
local authorTail = #author <= 50 and author or string.sub(author, findUtf8CharAt(author, -50))
for i, p in ipairs(resources.etalPatterns) do
local a, e = string.match(authorTail, p)
if a then
author = string.sub(author, 1, #author-#e)
etal = e
break
end
end
function decodeEntity(s)
local result = nil
local hex = string.match(s, "^&#[xX]([0-9A-Fa-f]+);$")
if hex then
result = mw.ustring.char(tonumber(hex, 16))
else
local dec = string.match(s, "^&#([0-9]+);$")
if dec then
result = mw.ustring.char(tonumber(dec, 10))
elseif resources.htmlEntities[s] then
result = mw.ustring.char(resources.htmlEntities[s])
else
return string.gsub(s, ";", "\\:")
end
end
if result == ";" then
return "\\:"
elseif result == "," then
return "\\."
elseif result == "\\" then
return "\\\\"
else
return result
end
end
local authorHead = #author <= 500 and author or string.sub(author, 1, findUtf8CharAt(author, 500) - 1)
local result = {}
local esc1 = string.gsub(authorHead, "\\", "\\\\")
local esc2 = string.gsub(esc1, "&#?[a-zA-Z0-9]+;", decodeEntity)
local splitter = string.match(esc2, ";") and ";" or ","
local authors = mw.text.split(esc2, splitter.."%s*", false)
local nth = false
local count = #authors
if (#authorHead < #author) and (count > 4) then
if count > 5 then
table.remove(authors, count)
count = count - 1
end
local at, _ = string.find(authorHead, authors[count], 1, true)
nth = string.sub(author, at)
table.remove(authors, count)
count = count - 1
end
local alt = false
if (splitter == ",") and checkForAltFormat then
local altAuthors = {}
alt = true
for i, v in ipairs(authors) do
local n0 = ""
local s, n = mw.ustring.match(v, "^(%u%l+)%s(%u+)%.?$")
if not s then
s, n = mw.ustring.match(v, "^(%u%l+[%s%-–]%u%l+)%s(%u+)%.?$")
end
if not s then
n0, s, n = mw.ustring.match(v, "^(%l%l%l?)%s(%u%l+)%s(%u+)%.?$") -- de, von, van, der etc.
end
if not s then
alt = false
break
end
local initials, _ = mw.ustring.gsub(n, "(%u)", "%1.")
if #n0 > 0 then
n0 = " "..n0
end
table.insert(altAuthors, s..", "..initials..n0)
end
if alt then
authors = altAuthors
splitter = ";"
end
end
for i, v in ipairs(authors) do
local author = parseAuthor(v)
if author then
table.insert(result, author)
end
end
if #result == 0 then
return
end
local check = false
if alt then
check = "alt"
elseif (#result == 2) and (splitter == ",") then
check = not result[1].link and not result[1].exact and not result[1].name
or not result[2].link and not result[2].exact and not result[2].name
if check then
if result[1].lastname and not result[1].name and not result[2].exact
and not mw.ustring.match(result[1].lastname, "%S%s+%S") then
local oneAuthor = parseAuthor(author)
if oneAuthor then
table.remove(result,2)
result[1] = oneAuthor
check = false
end
end
end
if check then
mw.logObject(result,"przecinek u autora")
end
end
return { items = result, more=nth, comma = check, etal = etal, separator=splitter.." " }
end
local function formatAuthors(authors, useDecorations, nextgroup, etalForm)
local count = #authors.items
if count == 0 then
return nil, false
end
local suffix = function(author)
if useDecorations then
for _, v in ipairs(resources.authorFunc) do
if checkPatterns(author, v.prefixes, v.suffixes) then
return v.append
end
end
end
return ""
end
local formatter = function(author)
local a = author:format(nextgroup)
local r = author.link and ("[["..author.link.."|"..a.."]]") or a
return r..suffix(author)
end
if count == 1 then
local a1 = formatter(authors.items[1])
local etal = authors.etal and (etalForm or " i inni") or ""
return a1..etal, false
end
local result = {}
table.insert(result, formatter(authors.items[1]))
if not authors.etal and (count <= 3) then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[2]))
if count == 3 then
table.insert(result, ", ");
table.insert(result, formatter(authors.items[3]))
end
return table.concat(result, ""), false
end
local title = {}
for i = 1, count do
table.insert(title, authors.items[i]:towiki()..suffix(authors.items[i]))
end
if authors.more then
table.insert(title, authors.more)
end
table.insert(result, "<span class=\"cite-at-al\" title=\"")
table.insert(result, table.concat(title, authors.separator))
if authors.etal then
table.insert(result, etalForm or " i inni")
end
table.insert(result, "\">")
table.insert(result, etalForm or " i inni")
table.insert(result, "</span>")
return table.concat(result, ""), true
end
local function collectLanguages(value)
if value then
local result = {}
local values = mw.text.split(value, "%s+")
for _, v in ipairs(values) do
if #v > 0 then
table.insert(result, v)
end
end
if #result > 0 then
return result
end
end
return nil
end
local function splitFileLink(link)
local linkTitle = string.match(link, "^:(.+)$")
if not linkTitle then
return link, false
end
local title = mw.title.new(link)
if not title then
return link, false
end
mw.logObject(title.text, "splitFileLink - title.text")
if title.namespace == 6 then
local name, ext = mw.ustring.match(title.text, "(.-)%.(%a+)$")
if ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
elseif #title.interwiki > 0 then
local prefix, name, ext = mw.ustring.match(title.text, "(%a+):(.-)%.(%a+)$")
if prefix and resources.wikilinks.files[mw.ustring.upper(prefix)] and ext and resources.wikilinks.extensions[mw.ustring.lower(ext)] then
return name, ext
end
end
return link, false
end
local function splitWikiLink(text)
local link, description = mw.ustring.match(text, "^%[%[(.-)%|(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return description, link, false, ext
end
local link = mw.ustring.match(text, "^%[%[(.-)%]%]$")
if link then
local name, ext = splitFileLink(link)
return name or link, link, false, ext
end
local strony_modul=require("Module:Strony");
local link, description = mw.ustring.match(text, "^%[(%S*)%s+(.-)%]$")
if link and strony_modul.SprawdzanieURL(link) then
return description, false, link, false
end
return text, false, false, false
end
local function detectArchive(url)
local uri = mw.uri.new(url)
local detectors = resources.archiveDecoders.services[resources.archiveDecoders.hosts[uri.host]]
if detectors then
--mw.logObject(uri.host,"detectArchive uri.host")
--mw.logObject(uri.relativePath,"detectArchive uri.relativePath")
--mw.logObject(resources.archiveDecoders.hosts[uri.host],"detectArchive service")
for i, v in ipairs(detectors) do
local pattern = v.pattern
local decoder = resources.archiveDecoders.decoders[v.decoder]
if pattern and decoder then
local items = { mw.ustring.match(uri.relativePath, pattern) }
if #items > 0 then
--mw.logObject(items[decoder.link],"detectArchive link")
--mw.logObject(items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day],"detectArchive date")
return items[decoder.link], items[decoder.year].."-"..items[decoder.month].."-"..items[decoder.day]
end
end
end
end
return false, false
end
local function isAutoGeneratedUrl(url)
local address = string.gsub(url, "^https?:", "")
for k, v in pairs(resources.params) do
if v.link then
local links = type(v.link) == "table" and v.link or { v.link }
for _, vlink in ipairs(links) do
local prefix = string.gsub(vlink, "^https?:", "")
if (#address > #prefix) and (string.sub(address, 1, #prefix) == prefix) then
return v.name
end
end
end
end
return false
end
local function loadCitation(frame, mode)
local result = {}
-- map parameters based on: Moduł:Cytuj/dane
for k, v in pairs(resources.params) do
if v.used[mode] then
local value = frame.args[v.name]
if value then
value = mw.text.trim(value)
if #value > 0 then
result[k] = value
end
end
if (v.used[mode] == "!") and not result[k] then
-- simulate missing mandatory parameter
result[k] = "{{{"..v.name.."}}}"
if not result.missing then
result.missing = v.name
end
end
end
end
-- check url argument
if result.url == "nie" then
result.url = false
elseif result.url then
local strony_modul=require("Module:Strony");
if not strony_modul.SprawdzanieURL(result.url) then
local unstrip = mw.text.unstripNoWiki( result.url )
result.url = false
if unstrip then
result.urlnowiki = strony_modul.SprawdzanieURL(unstrip)
end
end
end
-- translate some parameters
local altAuthorParser = false
if result.journal and result.pmid and result.author and not result.chapterauthor and not result.editor and not result.others then
altAuthorParser = true
end
result.chapterauthor = collectAuthors(result.chapterauthor, false)
result.author = collectAuthors(result.author, altAuthorParser)
result.lang = collectLanguages(result.lang)
result.editor = collectAuthors(result.editor, false)
result.others = collectAuthors(result.others, false)
-- parse main bibliographic date
if result.date then
local bibDate = false
local bibDateHint = false
local coinsDate = false
local odnDate = false
for _, v in ipairs(resources.bibDates) do
for _, p in ipairs(v.patterns) do
local bib, c = mw.ustring.gsub(result.date, p, v.show)
if bib and (c > 0) then
bibDate = bib
bibDateHint = v.hint
if v.coins then
local cd, cc = mw.ustring.gsub(result.date, p, v.coins)
if cd and (cc > 0) then
coinsDate = cd
end
end
if v.odn then
local od, oc = mw.ustring.gsub(result.date, p, v.odn)
if od and (oc > 0) then
odnDate = od
end
end
break
end
if bibDate then
break
end
end
end
if bibDate then
result.date = { bib = bibDate, hint = bibDateHint, coins = coinsDate, odn = odnDate }
else
local date, patch = parseDate(result.date or "", false, false, true)
if date then
date.coins = (patch and date.year)
or (date.day and string.format("%04d-%02d-%02d", date.year, date.month, date.day))
or (date.month and string.format("%04d-%02d", date.year, date.month))
or date.year
date.odn = date.year
elseif result.date then
result.badDate = true
end
result.date = date
result.patchCitoidDate = patch
end
end
-- fix other dates
if result.accessdate then
result.accessdate = parseDate(result.accessdate or "", false, false, false)
if result.accessdate and not result.accessdate.day then
result.badAccessDate = true
result.accessdate = nil
elseif not result.accessdate then
result.badAccessDate = true
end
end
-- allow more ISBN numbers
if result.isbn then
-- TODO allow "(info)" for custom description followed each identifier
result.isbn = mw.text.split(result.isbn, "%s+")
end
if result.title then
local url
result.title, result.titlelink, url, result.titleext = splitWikiLink(result.title)
if url or result.titlelink then
if result.url and (#result.url > 0) and (result.url ~= "{{{url}}}") then
result.urlWarning = true
end
result.url = url
end
end
if result.chapter then
result.chapter, result.chapterlink, result.chapterurl, result.chapterext = splitWikiLink(result.chapter)
end
if result.journal then
local journalAbbr, _ = mw.ustring.gsub(result.journal, "[%.%s]+", " ")
mw.logObject(journalAbbr, "journalAbbr")
if mw.ustring.match(journalAbbr, "^[%a%s&-]+[,:]?[%a%s&-]+%d?$") -- kandydat na skrót powinien mieć tylko litery z opcjonalnymi odstępami i co najwyżej jednym dwukropkiem lub przecinkiem
or mw.ustring.match(journalAbbr, "^[%a%s&-]+%([%a%s&-,:]+%d*%)$") then -- opcjonalnie jakieś dookreślenie w nawiasie
local expandedJournal = mw.loadData("Moduł:Cytuj/czasopisma")[mw.text.trim(journalAbbr)]
if expandedJournal then
result.originalJournal = result.journal
result.journal = expandedJournal
end
end
result.journal, result.journallink, result.journalurl, result.journalext = splitWikiLink(result.journal)
end
if result.journal and not result.journallink and not result.journalurl and not result.title and result.url then
result.journalurl = result.url
result.url = false
end
if result.url then
local n = isAutoGeneratedUrl(result.url)
if n then
result.rejectedurl = true
if result[n] then
result.url = false
end
end
end
if result.chapterurl then
local n = isAutoGeneratedUrl(result.chapterurl)
if n then
result.rejectedurl = true
if result[n] then
result.chapterurl = false
end
end
end
if result.journalurl then
local n = isAutoGeneratedUrl(result.journalurl)
if n then
result.rejectedurl = true
if result[n] then
result.journalurl = false
end
end
end
if not result.archive and result.url then
local al, ad = detectArchive(result.url)
if al then
result.archiveurl = true
result.archive = result.url
result.url = al
if ad then result.archived = ad end
end
elseif not result.archive and result.chapterurl then
local al, ad = detectArchive(result.chapterurl)
if al then
result.archivechapter = true
result.archive = result.chapterurl
result.chapterurl = al
if ad then result.archived = ad end
end
elseif not result.archive and result.journalurl then
local al, ad = detectArchive(result.journalurl)
if al then
result.archivejournal = true
result.archive = result.journalurl
result.journalurl = al
if ad then result.archived = ad end
end
elseif result.archive and not result.archived then
local al, ad = detectArchive(result.archive)
if ad and not result.archived then result.archived = ad end
end
if result.archive then
if result.chapterurl and not result.url then
result.archivechapter = true
elseif result.title then
result.archiveurl = true
elseif result.journal then
result.archivejournal = true
end
end
if result.archived then
result.archived = parseDate(result.archived or "", false, false, false)
if result.archived and not result.archived.day then
result.badArchivedDate = true
result.archived = null
elseif not result.archived then
result.badArchivedDate = true
end
end
if result.edition and result.journal and not result.volume and not result.issue then
local volume, issue = mw.ustring.match(result.edition, "^%s*([^%(]+)%s+%((.-)%)%s*$");
if volume then
result.volume = volume
result.issue = issue
result.edition = nil
end
end
if result.pmc and (#result.pmc > 3) and (mw.ustring.sub(result.pmc, 1, 3) == "PMC") then
result.pmc = mw.ustring.sub(result.pmc, 4, #result.pmc)
end
if result.accessKind then
result.accessKind = access.choice[result.accessKind]
result.unknownAccess = not result.accessKind
else
result.accessKind = (result.pmc and "open")
or access.doi[doiPrefix]
or access.journals[result.journal]
end
if result.doi then
result.doi = mw.text.split(result.doi, '%s+', false)
for i, v in ipairs(result.doi) do
local doiPrefix
local doiSuffix
doiPrefix, doiSuffix = mw.ustring.match(v, "^10%.([^/]+)/(.+)$")
if (doiPrefix == "2307") and not result.jstor then
result.jstor = doiSuffix
end
if not result.accessKind and not result.unknownAccess then
result.accessKind = access.doi[doiPrefix]
end
end
end
if result.patent then
mw.logObject(result.patent,"input:patent")
local patentPatterns = mw.loadData("Moduł:Cytuj/patent")
local patent = nil
local strony_modul=require("Module:Strony");
for _, v in ipairs(patentPatterns) do
if string.match(result.patent, v.pattern) then
local patentNumber, _ = string.gsub(result.patent, v.pattern, v.number or "%1")
local patentCountry, _ = string.gsub(result.patent, v.pattern, v.country)
local patentInfo = v.info or patentPatterns.ccinfo[patentCountry]
if (result.url == nil) and v.url then
local url, _ = string.gsub(result.patent, v.pattern, v.url)
if strony_modul.SprawdzanieURL(url) then
result.url = url
end
end
local patentTitle
if v.title then
patentTitle, _ = string.gsub(result.patent, v.pattern, v.title)
elseif patentInfo then
patentTitle = string.format('<span title="%s">%s %s</span>', patentInfo, patentCountry, patentNumber)
else
patentTitle = patentCountry.." "..patentNumber
end
patent = {
number = patentNumber,
application = v.application,
country = patentCountry,
title = patentTitle,
}
break
end
end
result.patent = patent
mw.logObject(result.patent,"parsed:patent")
end
-- return collected parameters if there is any
for k, v in pairs(result) do
return result
end
-- there are no supported parameters
return nil
end
local function prepareOdnIdentifier(data)
if not data.odn or (#data.odn == 0) or (data.odn == "nie") then
return nil
end
data.diferentiator = mw.ustring.match(data.odn, "^([a-z])$") or false
if data.odn ~= "tak" and not data.diferentiator then
-- TODO return only CITEREF...
return data.odn
end
local authors = data.chapterauthor or data.author or data.editor
if not authors then
-- required custom identifier
return nil
end
return "CITEREF"
.. (authors.items[1] and (authors.items[1].lastname or authors.items[1].exact) or "")
.. (authors.items[2] and (authors.items[2].lastname or authors.items[2].exact) or "")
.. (authors.items[3] and (authors.items[3].lastname or authors.items[3].exact) or "")
.. (authors.items[4] and (authors.items[4].lastname or authors.items[4].exact) or "")
.. (data.date and data.date.odn or "")
.. (data.diferentiator or "")
end
local function bookCOinS(data)
local authors = data.chapterauthor or data.author
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:book"
if data.chapter and (#data.chapter > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.chapter)
result["rft.btitle"] = plainText(data.title)
elseif data.work and (#data.work > 0) then
result["rft.gengre"] = "bookitem"
result["rft.atitle"] = plainText(data.title)
result["rft.btitle"] = plainText(data.work)
else
result["rft.btitle"] = plainText(data.title)
result["rft.gengre"] = "book"
end
if authors then
if authors.items[1].lastname then result["rft.aulast"] = authors.items[1].lastname end
if authors.items[1].name then result["rft.aufirst"] = authors.items[1].name end
if authors.items[1].exact then result["rft.au"] = authors.items[1].exact end
end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.series then result["rft.series"] = data.series end
if data.edition then result["rft.edition"] = data.edition end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.isbn then result["rft.isbn"] = data.isbn[1] end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.oclc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:oclcnum/"..data.oclc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.lccn then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:lccn/"..data.lccn})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function journalCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
local gengre = (data.arxiv and (#data.arxiv > 0)) and "preprint" or "article"
result["rft.gengre"] = data.title and gengre or "journal"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.journal)
if data.chapter then result["rft.atitle"] = plainText(data.chapter) end
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
if data.volume then result["rft.volume"] = data.volume end
if data.issue then result["rft.edition"] = data.issue end
if data.publisher then result["rft.pub"] = data.publisher end
if data.place then result["rft.place"] = data.place end
if data.pages then result["rft.pages"] = data.pages end
if data.issn then result["rft.issn"] = data.issn end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.pmid then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmid/"..data.pmid})) end
if data.pmc then table.insert(params, mw.uri.buildQueryString( {rft_id = "info:pmc/"..data.pmc})) end
if data.doi then
for _, v in ipairs(data.doi) do
table.insert(params, mw.uri.buildQueryString( {rft_id = "info:doi/"..v}))
end
end
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function webCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
result["rft.gengre"] = "unknown"
if data.title then result["rft.atitle"] = plainText(data.title) end
result["rft.jtitle"] = plainText(data.published)
if data.date and data.date.coins then
result["rft.date"] = data.date.coins
end
if data.title and author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function patentCOinS(data)
local result = {}
result["rft_val_fmt"] = "info:ofi/fmt:kev:mtx:journal"
if data.title then result["rft.title"] = plainText(data.title) end
result[data.patent.application and "rft.applnumber" or "rft.number"] = data.patent.number
result["rft.cc"] = data.patent.country
if data.date and data.date.coins then
result[data.patent.application and "rft.appldate" or "rft.date"] = data.date.coins
end
if author then
if author[1].lastname then result["rft.aulast"] = author[1].lastname end
if author[1].name then result["rft.aufirst"] = author[1].name end
if author[1].exact then result["rft.au"] = author[1].exact end
end
-- rft.assignee = author (wszyscy?)
-- rft.inventor = others (wszyscy?)
local params = {
"ctx_ver=Z39.88-2004",
mw.uri.buildQueryString(result),
}
if data.url then table.insert(params, mw.uri.buildQueryString( {rft_id = data.url})) end
local coinsData = table.concat(params, "&")
return coinsData;
end
local function COinS(data, coinsFormat)
if resources.abbrTitles[data.title] then
-- full citation is elsewhere
return false
elseif (coinsFormat == "info:ofi/fmt:kev:mtx:book") and data.title and (#data.title > 0) then
-- title is mandatory element for books
return bookCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.journal and (#data.journal > 0) and (not data.published or (data.journal ~= data.published)) then
-- journal title is mandatory element for journals
return journalCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:journal" and data.published and (#data.published > 0) then
return webCOinS(data)
elseif coinsFormat == "info:ofi/fmt:kev:mtx:patent" and data.patent then
return patentCOinS(data)
elseif data.title and (#data.title > 0) then
-- treat web or unrecognized citations as book
return bookCOinS(data)
else
return false
end
end
--[[
Format edition (number or marc 250$a).
Different for journal.
Tests: Wikipedysta:Nux/test Cytuj wydanie
--]]
local function formatEdition(edition, journal)
local prefix = false
if not journal then
prefix = true
if string.find(edition, "[Ww]yd[a. ]") then
prefix = false
elseif string.find(edition, "[Ee]dition") then
prefix = false
end
end
return (prefix and "wyd. " or "") .. edition
end
--[[
Main.
--]]
local function Cite(p, mode, appendText, firewall)
-- typ jednostki 2
--local p=(not mode)and (frame.getParent and frame:getParent() or frame) or frame;
local types;
local frame2=p:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if(typ_jednostki=="artykuł")then
types="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
types="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
types="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
types="(strony brudnopisu projektu)";
else
types="(strony niepodręcznikowe)";
end;
-- debug helper
if p.args[3] then mw.log(p.args[3]) end
local customMode = mode
-- try to determine type basing on passed parameters
local coinsFormat = resources.COinS[mode]
if not mode then
mode, coinsFormat = determineMode(p)
end
local data = loadCitation(p, mode)
if not data then
local result = mw.html.create("span")
:addClass("problemy")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
:attr("data-problemy", "Brak wyników w szablonie cytowania")
if mw.title.getCurrentTitle().namespace == 0 then
result:wikitext(string.format(categories.empty,types))
end
result:wikitext(" ") -- thin space
return tostring(result)
end
-- convert web page to book for old date
if (mode == 4) and data.date and data.date.odn then
local year = tonumber(data.date.odn)
if year and (year < 1990) then
mode = 2
end
end
if data.missing then
-- do not produce any COiNS info
-- if some mandatory argument is missing
coinsFormat = false
end
local builder = mw.html.create("cite")
builder
:addClass("citation")
:addClass(resources.cite[mode] or nil)
:addClass(access.class[data.accessKind])
:attr("id", prepareOdnIdentifier(data))
--:wikitext(access.render[data.accessKind], ' ')
local needDot = false
local nextAuthorGroup = false
if data.title or data.patent then
if data.chapter then
local authors = data.editor and data.author or data.chapterauthor
if authors then
local list, etal = formatAuthors(authors, false, nextAuthorGroup, nil)
builder:wikitext(list, ", ")
nextAuthorGroup = true
end
local title = softNoWiki(data.chapter)
if data.urlstatus == "ukryj" then
if data.archivechapter and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.chapterurl then
builder:wikitext("[", escapeUrl(data.archivechapter and data.archive or data.chapterurl), " ''", title, "'']")
elseif data.chapterlink then
builder:wikitext("[[", data.chapterlink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if data.format then
builder:wikitext(" [", data.format, "]")
end
builder:wikitext(", [w:] ")
end
local authors = false
local editor = false
if not data.chapter and data.author then
authors = data.author
else
authors = data.editor or data.author
editor = data.editor
end
if authors then
local list, etal = formatAuthors(authors, not (editor or false), nextAuthorGroup, editor and " i inni red." or nil)
builder:wikitext(list)
nextAuthorGroup = true
if editor and not etal and not authors.etal then
builder:wikitext(" (red.)")
end
builder:wikitext(", ")
end
if customMode and data.authorextra then
builder:wikitext(data.authorextra, ", ")
end
if resources.abbrTitles[data.title] then
local title = resources.abbrTitles[data.title]
builder:wikitext(title)
needDot = not mw.ustring.match(title, "%.%]%]$")
and not mw.ustring.match(title, "%.$")
elseif data.title then
local title = softNoWiki(data.title)
if data.urlstatus == "ukryj" then
if data.archiveurl and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " ''", title, "'']")
else
builder:wikitext("''", title, "''")
end
elseif data.url or data.archiveurl then
builder:wikitext("[", escapeUrl(data.archiveurl and data.archive or data.url), " ''", title, "'']")
elseif data.titlelink then
builder:wikitext("[[", data.titlelink, "|''", title, "'']]")
else
builder:wikitext("''", title, "''")
end
if not data.chapter and data.format then
builder:wikitext(" [", data.format, "]")
needDot = true
elseif not mw.ustring.match(plainText(title), "[%.,!?]$") then
needDot = true
end
local showmediatype = data.mediatype and (#data.mediatype > 0)
if showmediatype then
builder:wikitext(" [", data.mediatype, "]")
needDot = true
end
end
if not editor and data.editor then
local list, etal = formatAuthors(data.editor, false, true, " i inni red.")
builder:wikitext(needDot and ", " or " ", list, (etal or data.editor.etal) and "" or " (red.)")
needDot = true
end
if data.others then
local list, etal = formatAuthors(data.others, true, true, nil)
builder:wikitext(needDot and ", " or " ", data.patent and resources.patent.inventor.." " or "", list)
needDot = true
end
if data.patent then
local title = (not data.title and data.url) and string.format("[%s %s]", escapeUrl(data.url), data.patent.title) or data.patent.title
builder:wikitext(needDot and ", " or " ", resources.patent[data.patent.application], " ", title)
needDot = true
end
elseif data.journal and data.author then
local list, etal = formatAuthors(data.author, false, false, nil)
builder:wikitext(list, ", ")
end
if data.work then
builder:wikitext((data.title or data.patent) and ", " or "", "[w:] ", data.work)
needDot = true
end
-- web -> [online]
if (mode == 4) and not data.mediatype then
builder:wikitext(" [online]")
end
if data.journal and (not data.published or (data.journal ~= data.published)) then
builder:wikitext((data.title or data.work) and ", " or "")
local title = softNoWiki(data.journal)
if data.urlstatus == "ukryj" then
if data.archivejournal and data.archive then
builder:wikitext("[", escapeUrl(data.archive), " „", title, "”]")
else
builder:wikitext("„", title, "”")
end
elseif data.journalurl or data.archivejournal then
builder:wikitext("[", escapeUrl(data.archivejournal and data.archive or data.journalurl), " „", title, "”]")
elseif data.journallink then
builder:wikitext("„[[", data.journallink, "|", title, "]]”")
else
builder:wikitext("„", title, "”")
end
needDot = true
end
if data.responsibility then
builder:wikitext(", ", data.responsibility)
needDot = true
end
if data.edition then
builder:wikitext(", ", formatEdition(data.edition, data.journal))
needDot = true
end
if data.volume then
builder:wikitext(data.journal and ", " or ", t. ", data.volume)
needDot = true
end
if data.journal and data.issue then
builder:wikitext(" (", data.issue, ")")
needDot = true
end
if data.description and (#data.description > 0) then
builder:wikitext(", ", data.description)
needDot = true
end
if data.published and not data.publisher then
builder:wikitext(", ", data.published)
needDot = true
end
local place = false
if data.place then
builder:wikitext(", ", data.place)
needDot = true
place = true
end
if data.publisher then
builder:wikitext(place and ": " or ", ", data.publisher)
needDot = true
place = false
end
if data.date then
local shortDate = data.journal and (data.doi or data.pmid or data.pmc)
if data.date.bib and data.date.hint then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", data.date.hint):wikitext(data.date.bib)
elseif data.date.bib then
builder:wikitext(place and " " or ", ", data.date.bib)
elseif data.date.day and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", tostring(data.date.day).." "..resources.months[data.date.month].d.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.month and shortDate then
builder:wikitext(place and " " or ", "):tag("span"):attr("title", resources.months[data.date.month].m.." "..tostring(data.date.year)):wikitext(data.date.year)
elseif data.date.day then
builder:wikitext(", ", tostring(data.date.day), " ", resources.months[data.date.month].d, " ", tostring(data.date.year))
elseif data.date.month then
builder:wikitext(", ", resources.months[data.date.month].m, " ", tostring(data.date.year))
else
builder:wikitext(place and " " or ", ", data.date.year)
end
builder:wikitext(data.diferentiator or "")
needDot = true
end
if not data.journal and (data.series or data.issue) then
builder:wikitext(" (", data.series or "", (data.series and data.issue) and "; " or "", data.issue or "", ")")
needDot = true
elseif data.journal and data.series then
builder:wikitext(" (", data.series, ")")
needDot = true
end
if data.p and #data.p > 0 then
local isNonStandardPageNumber = mw.ustring.match(data.p, "[^%s0-9,%-–]")
builder:wikitext(isNonStandardPageNumber and ", " or ", s.\194\160", data.p)
needDot = true
end
if data.doi then
local separator = " "
builder:addClass("doi"):wikitext(", [[DOI (identyfikator cyfrowy)|DOI]]:")
local doiLink = first(resources.params.doi.link)
for _, v in ipairs(data.doi) do
builder:wikitext(separator, "[", doiLink, mw.uri.encode(v), " ", softNoWiki(v), "]")
separator = ", "
end
needDot = true
end
if data.isbn then
for i,v in ipairs(data.isbn) do
builder:wikitext(", ")
require("Moduł:ISBN").link(builder, v)
end
needDot = true
end
if data.lccn then
builder:wikitext(", [[w:Biblioteka Kongresu|LCCN]] [", first(resources.params.lccn.link), mw.uri.encode(data.lccn), " ", data.lccn, "]")
needDot = true
end
if data.issn then
builder:tag("span"):addClass("issn"):wikitext(", [[w:International Standard Serial Number|ISSN]] [", first(resources.params.issn.link), data.issn, " ", data.issn, "]")
needDot = true
end
if data.pmid then
builder:addClass("pmid"):wikitext(", [[w:PMID|PMID]]: [", first(resources.params.pmid.link), data.pmid, " ", data.pmid, "]")
needDot = true
end
if data.pmc then
builder:addClass("pmc"):wikitext(", [[w:PMCID|PMCID]]: [", first(resources.params.pmc.link), data.pmc, "/ PMC", data.pmc, "]")
needDot = true
end
if data.bibcode then
builder:wikitext(", [[w:Bibcode|Bibcode]]: [", first(resources.params.bibcode.link), data.bibcode, " ", data.bibcode, "]")
needDot = true
end
if data.oclc then
builder:wikitext(", [[w:Online Computer Library Center|OCLC]] [", first(resources.params.oclc.link), mw.uri.encode(data.oclc), " ", data.oclc, "]")
needDot = true
end
if data.arxiv then
builder:wikitext(", [[arXiv]]:")
local eprint, class = mw.ustring.match(data.arxiv, "^(%S+)%s+%[([^%[%]]+)%]$")
if eprint then
builder:wikitext("[", first(resources.params.arxiv.link), eprint, " ", eprint, "] [[//arxiv.org/archive/", class, " ", class, "]]" )
else
builder:wikitext("[", first(resources.params.arxiv.link), data.arxiv, " ", data.arxiv, "]" )
end
needDot = true
end
if data.jstor then
builder:tag("span"):addClass("jstor"):wikitext(", [[JSTOR]]: [", first(resources.params.jstor.link), data.jstor, " ", data.jstor, "]")
needDot = true
end
if data.ol then
builder:tag("span"):addClass("open-library"):wikitext(", [[Open Library|OL]]: [", first(resources.params.ol.link), data.ol, " ", data.ol, "]")
needDot = true
end
if data.id then
builder:wikitext(", ", data.id)
needDot = true
end
if data.accessdate then
builder:tag("span"):addClass("accessdate"):wikitext(" [dostęp ", string.format("%04d-%02d-%02d", data.accessdate.year, data.accessdate.month, data.accessdate.day), "]")
needDot = true
end
if data.archive then
builder:wikitext(" [zarchiwizowane")
if data.urlstatus ~= "ukryj" then
local url = data.archiveurl and data.url or (data.archivechapter and data.chapterurl or data.journalurl)
if url then
builder:wikitext(" z [", escapeUrl(url), " adresu]")
end
end
if data.archived and data.archived.day then
builder:wikitext(" ", string.format("%04d-%02d-%02d", data.archived.year, data.archived.month, data.archived.day))
end
builder:wikitext("]")
needDot = true
end
if data.quotation then
builder:wikitext(", Cytat: ", data.quotation)
needDot = true
end
local coinsData = COinS(data, coinsFormat)
if coinsData then
builder:tag("span"):addClass("Z3988"):attr("title",coinsData):css("display","none"):wikitext(" ")
end
if data.lang then
local languages = require("Moduł:Lang").lang({args = data.lang})
builder:wikitext(" ", languages)
needDot = true
end
if data.fullStop then
if not mw.ustring.match(data.fullStop, "^[%.!?,;:]") then
builder:wikitext(", ")
end
builder:wikitext(data.fullStop)
needDot = mw.ustring.match(data.fullStop, "[%.!?,;:]$") == nil
end
if needDot then
builder:wikitext(".")
end
if appendText then
builder:wikitext(string.format(appendText,types))
end
-- categories
local addCategories = mw.title.getCurrentTitle().namespace == 0
local problems = {}
if not customMode and (mode == 1) then
builder:wikitext(string.format(categories.undetermined,types))
table.insert(problems, "???")
end
if data.publisher and data.published then
table.insert(problems, "p?")
if addCategories then
table.insert(problems, string.format(categories.unusedPublished,types))
end
end
if data.journal and data.published and (data.journal == data.published) then
table.insert(problems, "j?")
if addCategories then
table.insert(problems, string.fomat(categories.sameJournalAndPublished,types))
end
end
if (not data.url and not data.chapterurl) or (not data.title and not data.journalurl) then
builder:addClass(data.urlnowiki and "urlnowiki" or "nourl")
end
local missing = false
local needurl = ((resources.params.published.used[mode] == "*") and data.published) or (resources.params.url.used[mode] == "*")
if data.missing then
-- usually missing title, this is the first check for mandatory arguments
table.insert(problems, data.missing)
missing = true
elseif needurl and not data.url and not data.chapterurl and not data.arxiv and not data.archive then
-- build in support for missing external link for page citation
table.insert(problems, resources.params.url.name)
missing = true
else
-- any other missing value (first catch)
for k, v in pairs(resources.params) do
if (v.used[mode] == "!") and (not data[k] or (#data[k] == 0)) then
table.insert(problems, v.name)
missing = true
break
end
end
end
if missing and addCategories then
builder:wikitext(string.format(categories.missingArg or categories.check, types, resources.modes[mode]))
end
if (data.chapterauthor and data.chapterauthor.comma)
or (data.author and (data.author.comma == true))
or (data.editor and data.editor.comma)
or (data.others and data.others.comma) then
table.insert(problems, "!!!")
if addCategories then
builder:wikitext(string.format(categories.suspectedComma,types))
end
end
if data.author and (data.author.comma == "alt") then
table.insert(problems, "a?")
if addCategories then
builder:wikitext(string.format(categories.altAuthor,types))
end
end
if data.originalJournal then
builder:addClass("c") -- CSS dla lokalizacji w treści
if addCategories then
builder:wikitext(string.format(categories.altJournal,types))
end
end
local citewikipedia = (data.url and mw.ustring.match(data.url, "%.wikipedia%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikipedia"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikipedia"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikipedia"));
local citewikibooks = (data.url and mw.ustring.match(data.url, "%.wikibooks%.org"))
or (data.journal and mw.ustring.match(killLinkInterwiki(data.journal), "[Ww]ikibooks"))
or (data.publisher and mw.ustring.match(killLinkInterwiki(data.publisher), "[Ww]ikibooks"))
or (data.published and mw.ustring.match(killLinkInterwiki(data.published), "[Ww]ikibooks"));
if citewikipedia or citewikibooks then
local justification = false
local acceptedLinks = mw.loadData("Moduł:Cytuj/wiki")[mw.wikibase.getEntityIdForCurrentPage()] or {}
for i, v in ipairs(acceptedLinks) do
justification = (v == data.url) or (v == data.archive)
if justification then
break
end
end
if not justification then
table.insert(problems, "wiki?")
if addCategories then
if(citewikipedia)then
builder:wikitext(string.format(categories.wikipedia,types))
end;
if(citewikibooks)then
builder:wikitext(string.format(categories.wikibooks,types))
end;
end
end
end
if data.unknownAccess then
table.insert(problems, "dostęp?")
if addCategories then
builder:wikitext(string.format(categories.unknownAccess,types))
end
end
if data.rejectedurl then
table.insert(problems, "<s>url</s>")
if addCategories then
builder:wikitext(string.format(categories.rejectedUrl,types))
end
end
if data.urlWarning then
table.insert(problems, "Url")
if addCategories then
builder:wikitext(string.format(categories.unusedUrl,types))
end
end
if data.patchCitoidDate then
table.insert(problems, "1 stycznia")
end
if data.badDate then
table.insert(problems, "data?")
end
if data.badAccessDate then
table.insert(problems, "data dostępu?")
end
if data.badArchivedDate then
table.insert(problems, "zarchiwizowano?")
end
if addCategories and (data.badDate or data.badAccessDate or data.badArchiveDate) then
builder:wikitext(string.format(categories.badDate,types))
end
if (data.author and data.author.etal)
or (data.chapterauthor and data.chapterauthor.etal)
or (data.editor and data.editor.etal)
or (data.others and data.others.etal) then
table.insert(problems, "i inni")
if addCategories then
builder:wikitext(string.format(categories.etal,types))
end
end
if firewall then
local reportFirewall = function(report)
if report then
table.insert(problems, report.info)
if addCategories and report.cat then
local cat = mw.ustring.format(categories.firewall, types, report.cat)
builder:wikitext(cat)
end
end
end
local reportCommonsFile = function(ext)
mw.logObject(ext, "ext")
if ext and (firewall.commonsFile[ext] ~= false) then
local issue = firewall.commonsFile[ext] or firewall.commonsFile[true]
reportFirewall(firewall.reports[issue])
end
end
if data.url and firewall.url[data.url] ~= false then
local uri = mw.uri.new(data.url)
local issue = firewall.url[data.url]
or firewall.host[uri.host]
or firewall.path[uri.relativePath]
reportFirewall(firewall.reports[issue])
end
reportCommonsFile(data.chapterext)
reportCommonsFile(data.titleext)
reportCommonsFile(data.journalext)
end
if #problems > 0 then
local info = builder:tag("span")
:addClass("problemy")
:addClass("problemy-w-cytuj")
:attr("aria-hidden", "true")
:attr("data-nosnippet", "")
info:wikitext(table.concat(problems,", "))
end
return builder:done()
end
local p={};
p.auto = function(frame)
return Cite(frame:getParent(), nil, nil, mw.loadData("Moduł:Cytuj/firewall"))
end;
p.custom = function(frame,pf)
local traceCategory = false
local pagename = mw.title.getCurrentTitle()
if (pagename.namespace == 10) and (pf or frame.getParent) then
local nazwa_zablonu_rodzica=(pf or frame:getParent()).args["nazwa szablonu przodka"] or (pf or frame:getParent()).args["nazwa szablonu rodzica"];
local pelna_nazwa_zablonu_rodzica=nazwa_zablonu_rodzica and ("Szablon:"..nazwa_zablonu_rodzica) or nil;
local template = mw.title.new(pelna_nazwa_zablonu_rodzica or (pf or frame:getParent()):getTitle(), "Szablon" )
if mw.title.compare(template, pagename) == 0 then
traceCategory = categories.traceInvokeCustom
end
end
local customMode = frame.args[1]
local mode = 1
if customMode then
customMode = mw.text.trim(customMode)
for i, v in ipairs(resources.modes) do
if customMode == v then
mode = i
break
end
end
end
return Cite(pf or frame, mode, traceCategory, null)
end;
p.custom2=function(frame)
return p.custom(frame,frame:getParent());
end;
return p;
ef9f1yo8iedp8itkgpzqwpg717pvpu4
Szablon:Cytuj
10
31188
556479
527487
2026-09-15T04:27:09Z
Persino
2851
556479
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" />{{#invoke:Cytuj|{{{funkcja|auto}}}}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
ndjbfn66ek1vgm0hpqwvdeypsx90ozu
556480
556479
2026-09-15T04:29:35Z
Persino
2851
556480
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" />{{#invoke:Cytuj|{{{Funkcja|auto}}}}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
if70zpjg6ax0dv1j3wo05686tpzr5m2
556486
556480
2026-09-15T05:38:04Z
Persino
2851
556486
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!--
-->{{#switch:{{{Funkcja|custom}}}
|custom={{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom}}
|{{#invoke:Cytuj|auto}}
}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
dq90rzhx3ui8zfizgwca8kb59clgia7
556487
556486
2026-09-15T05:38:50Z
Persino
2851
556487
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!--
-->{{#switch:{{{Funkcja|custom}}}
|custom={{#invoke:Ramka|Moduł|Nazwa=Cytuj|Funkcja=custom}}
|{{#invoke:Cytuj|auto}}
}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
lrqqeyuvjs0h3sl8f9hz8afucm9h2st
556503
556487
2026-09-15T06:53:02Z
Persino
2851
556503
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!--
-->{{#switch:{{{Funkcja|custom}}}
|custom={{#invoke:Cytuj|custom2}}
|{{#invoke:Cytuj|auto}}
}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
luiij9g8s9i5fc9mihdskq8pdlw2dgi
556528
556503
2026-09-15T08:37:25Z
Persino
2851
556528
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!--
-->{{#switch:{{{Funkcja|auto}}}
|custom={{#invoke:Cytuj|custom2}}
|#default|auto={{#invoke:Cytuj|auto}}
}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
t0soxaxc4ksuxtpveh8tmiujj2b23tp
556530
556528
2026-09-15T08:41:58Z
Persino
2851
556530
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Cytuj/styles.css" /><!--
-->{{#switch:{{{Funkcja|auto}}}
|custom2={{#invoke:Cytuj|custom2}}
|custom={{#invoke:Cytuj|custom}}
|#default|auto={{#invoke:Cytuj|auto}}
}}{{#invoke:Sprawdź|Parametry|=problemy-w-cytuj {{((}}Kategoria{{!}}Szablon cytuj do sprawdzenia{{))}}|autor=text?|autor r=text|cytat=text|czasopismo=text-link|data=text?|data dostępu=text|format=text|inni=text|język=text|miejsce=text|odpowiedzialność=text|opublikowany=text|praca=text-link|rozdział=text-link|seria=text|url=uri*|url-status=text|tytuł=text-link|wydanie=text|wolumin=text|numer=text|wydawca=text|opis=text|redaktor=text|s=text-link|bibcode=text|doi=^10%.[1-9][0-9][0-9][0-9][0-9]*[%./].+$|isbn=^[0-9%- X]+$|issn=^[0-9][0-9][0-9][0-9]%-[0-9][0-9][0-9][0-9Xx]$|lccn=text|oclc=text|pmc=text|pmid=text|arxiv=text|jstor=text|ol=text|id=text-link|archiwum=uri|odn={{#ifeq:{{{odn|}}}|{{{odn}}}|{{#switch:{{{odn}}}|nie|tak|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z=text|^{{odn/id}}.+$}}}}|zarchiwizowano=text|typ nośnika=text|dostęp=text|patent=text|kropka=text-link}}<!--
-->{{#if:{{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=|adres=}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) - gołe linki}}{{Span|klasa=problemy-w-cytuj|styl=display:none;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) - gołe linki}}}{{Span|styl=color:red;|gołe linki: {{#invoke:Sprawdź|pola z gołymi linkami|url=|archiwum=}}}}
}}<!--
-->}}<!--
-->{{#if:{{{opis|}}}{{{kropka|}}}
|{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) używa pól opisowych}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) używa pól opisowych}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) używa pól opisowych}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) używa pól opisowych}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) używa pól opisowych}}
}}
}}<!--
-->{{#ifeq:tytuł|{{#invoke:Sprawdź|lista nazw niepustych argumentów}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Tylko tytuł<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}}}}}<!--
-->{{#ifeq:{{{opublikowany|}}}|{{{opublikowany}}}|<!--strona internetowa-->|<!--
-->{{#if:{{Dopasuj|ciąg={{{tytuł}}}|wzór=[Ii][Ss][Bb][Nn] *[0-9]}}|<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet> ISBN w tytule<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) do sprawdzenia}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) do sprawdzenia}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) do sprawdzenia}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) do sprawdzenia}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) do sprawdzenia}}
}}<!--
-->}}<!--
-->}}<!--
-->}}<!--
-->{{#if:{{{opublikowany|}}}{{{praca|}}}{{{patent|}}}{{#if:{{{autor r|}}}{{{rozdział|}}}{{{inni|}}}{{{odpowiedzialność|}}}{{{wydanie|}}}{{{wolumin|}}}{{{numer|}}}{{{opis|}}}{{{miejsce|}}}{{{wydawca|}}}{{{doi|}}}{{{isbn|}}}{{{lccn|}}}{{{issn|}}}{{{pmid|}}}{{{pmc|}}}{{{bibcode|}}}{{{oclc|}}}{{{arxiv|}}}{{{jstor|}}}{{{ol|}}}||{{{url|}}}}}||<!--
-->{{#if:{{{czasopismo|}}}|<!--
-->{{#if:{{{s|}}}{{{odn|}}}{{{doi|}}}{{{pmid|}}}{{{pmc|}}}{{{arxiv|}}}{{{jstor|}}}||<!--
-->{{Span|klasa=problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w czasopiśmie}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->|{{#if:{{{s|}}}{{{odn|}}}||<!--
-->{{Span|klasa==problemy|atrybuty=aria-hidden="true" data-nosnippet|Brak numerów stron w książce}}<!--
-->{{#switch:{{#invoke:Pudełko|Typ jednostki 2|obsługiwane jednostki jako nieopisowe strony=tak}}
|artykuł={{Kategoria|Szablon cytuj (artykuły) – brak strony}}
|artykuł dla dzieci={{Kategoria|Szablon cytuj (artykuły dla dzieci) – brak strony}}
|strona użytkownika={{Kategoria|Szablon cytuj (jednostki użytkowników) – brak strony}}
|strona brudnopisu projektu={{Kategoria|Szablon cytuj (jednostki brudnopisu projektu) – brak strony}}
|#default={{Kategoria|Szablon cytuj (strony niepodręcznikowe) – brak strony}}
}}<!--
-->}}<!--
-->}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
p7srlfn0065jhikepm9ufm9h63bchjt
Moduł:Sprawdź
828
31189
556500
552398
2026-09-15T06:43:32Z
Persino
2851
556500
Scribunto
text/plain
return {
["NazwaKategoriiSprawdzaniaParametrówSzablonu"]=function()
return "Szablony z dodatkową opcją sprawdzania parametrów";
end;
["UsuńKategorięSprawdzaniaParametrówSzablonu"]=function(frame)
local wikikod=frame.args[1];
local sprawdz_modul=require("Module:Sprawdź");
local kategoria_sprawdzania_parametrow=sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]();
local specjalne_modul=require("Module:Specjalne");
return specjalne_modul["UsuńŚciśleOkreśloneKategorie"]{[1]=wikikod,[2]=kategoria_sprawdzania_parametrow,}
end;
["Porównaj"] = function(frame)
local pf=frame:getParent();
local config = pf.args[""] or ""
local brudnopis=pf.args["brudnopis"];
local options = mw.text.split(config, "|")
local templateName = mw.text.trim(options[1])
if #templateName == 0 then
local title = mw.title.getCurrentTitle()
if title.namespace == 10 then
templateName = mw.ustring.match(title.text, "^(.-)/opis")
or mw.ustring.match(title.text, "^(.-)/test")
or mw.ustring.match(title.text, "^(.-)/brudnopis")
or title.text
end
if #templateName == 0 then
mw.log("brak nazwy szablonu")
return
end
end
local i = 2
local showparams = true
local showinfo = true
local vertical = false
local brudnopis;
while i <= #options do
local parametr,wartosc=mw.ustring.match(options[i],"^([^%=]*)%=(.*)$")
if(not parametr)then
local option = mw.text.trim(options[i])
if option == "bez wikikodu" then
showparams = false
elseif option == "bez opisu" then
showinfo = false
elseif option == "pionowo" then
vertical = true
end
else
local parametr=mw.text.trim(parametr)
if(parametr=="brudnopis")then
brudnopis=mw.text.trim(wartosc);
end;
end
i = i + 1
end;
local templateTitle = mw.title.new(templateName, 10)
if templateTitle.id == 0 then
mw.log("szablon '"..templateName.."' nie istnieje")
return
end
local sandboxName = brudnopis or (templateName.."/brudnopis")
local sandboxTitle = mw.title.new(sandboxName, 10)
if sandboxTitle.id == 0 then
mw.log("brudnopis '"..sandboxName.."' nie istnieje")
return
end
local templateParams = {}
local params = {}
for k, v in pairs(pf.args) do
if (k ~= "") then
templateParams[k] = v
table.insert(params, k)
end
end
local result = {}
table.insert(result, '<table style="width: 100%;">')
if showparams and (#params > 0) then
local compare = function(a, b)
-- return a < b
if (type(a) == "number") and (type(b) == "number") then
return a < b
end
if (type(a) == "string") and (type(b) == "string") then
return a < b
end
if (type(a) == "number") and (type(b) == "string") then
return true
end
return false
end
table.sort(params, compare)
table.insert(result, "<caption><code>{{")
table.insert(result, templateName)
for i, k in ipairs(params) do
table.insert(result, " | ")
local p = mw.text.nowiki(tostring(k))
local v = mw.text.nowiki(templateParams[k])
table.insert(result, p)
table.insert(result, " = ")
table.insert(result, v)
end
table.insert(result, "}}</code></caption>")
end
local templateResult = frame:expandTemplate{ title=templateName, args=templateParams}
local sandboxResult = frame:expandTemplate{ title=sandboxName, args=templateParams}
if templateResult and string.match(templateResult, "^{|") then
templateResult = "\n"..templateResult
end
if sandboxResult and string.match(sandboxResult, "^{|") then
sandboxResult = "\n"..sandboxResult
end
if vertical and showinfo then
table.insert(result, '<tr><th style="width: 15em">[[Szablon:')
table.insert(result, templateName)
table.insert(result, '|Szablon]]</th><td>')
table.insert(result, templateResult)
table.insert(result, '</td></tr><tr><th>[[Szablon:')
table.insert(result, sandboxName)
table.insert(result, '|Brudnopis szablonu]]</th><td>')
table.insert(result, sandboxResult)
table.insert(result, '</td></tr>')
elseif vertical then
table.insert(result, '<tr><td>')
table.insert(result, templateResult)
table.insert(result, '</td></tr><tr><td>')
table.insert(result, sandboxResult)
table.insert(result, '</td></tr>')
else
if showinfo then
table.insert(result, '<tr><th style="width: 50%;">[[Szablon:')
table.insert(result, templateName)
table.insert(result, '|Szablon]]</th><th style="width: 50%;">[[Szablon:')
table.insert(result, sandboxName)
table.insert(result, '|Brudnopis szablonu]]</th></tr>')
end
table.insert(result, '<tr style="vertical-align: top;"><td>')
table.insert(result, templateResult)
table.insert(result, '</td><td>')
table.insert(result, sandboxResult)
table.insert(result, '</td></tr>')
end
table.insert(result, "</table>")
return table.concat(result)
end,
["Parametry"] = function(frame)
local pf=frame:getParent();
local unknown = {}
local invalid = {}
local deprecated = {}
local nakedurl = {}
local exturl = {}
local files = {};
local templateName;
local function argName(arg)
local span = mw.html.create('span');
span:css('white-space','pre');
span:wikitext(arg);
return type(arg) ~= "string" and tostring(arg) or ('"'..tostring(span:allDone())..'"');
end
local parametry_modul=require("Module:Parametry");
local dodatkowe_elementy=pf.args["dodatkowe parametry"];
local tablica_dodatkowe_elementy;
if(parametry_modul.CzyTak(dodatkowe_elementy))then
tablica_dodatkowe_elementy={};
local __tablica_dodatkowe_elementy=mw.text.split(dodatkowe_elementy,";;",false);
for _,value in ipairs(__tablica_dodatkowe_elementy)do
local tab_dwoch_element=mw.text.split(value,"=",false);
if((tab_dwoch_element[1])and(tab_dwoch_element[2]))then
tablica_dodatkowe_elementy[mw.text.trim(tab_dwoch_element[1])]=mw.text.trim(tab_dwoch_element[2]);
end;
end;
end;
local ramka_modul=require("Module:Ramka");
local tabelka1=ramka_modul.RozpakujArgumenty(frame.args["bez argumentów szablonu"]);
local tabelka2=ramka_modul.RozpakujArgumenty(pf.args["bez argumentów szablonu"]);
local tabelka_bez_argumentow=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2)
local required = {};
local repeated = {};
local konieczne = {};
local empty = {};
local noempty = {};
local sprawdz_modul=mw.loadData("Module:Sprawdź/dane");
local tabelka_argumentow_systemowych_funkcji=sprawdz_modul.tabelka_argumentow_systemowych_funkcji;
local tabelka_argumentow_dodatkowych_funkcji=sprawdz_modul.tabelka_argumentow_dodatkowych_funkcji;
local tabelka_argumentow_systemowych_szablonu=sprawdz_modul.tabelka_argumentow_systemowych_szablonu;
local tabelka_argumentowa_ramki_szablon=sprawdz_modul.tabelka_argumentowa_ramki_szablon;
local tabelka_parametrow_rodzica={};
local parametry_rodzica=parametry_modul.CzyTak(pf.args["potomek"])and pf.args["parametry rodzica"];
local szablonowe_modul=require("Module:Szablonowe");
if(parametry_rodzica)then
tabelka_parametrow_rodzica=ramka_modul.RozpakujParametry(parametry_rodzica);
templateName=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
else
tabelka_parametrow_rodzica=pf.args;
templateName=szablonowe_modul.NazwaSzablonu(pf:getTitle());
end;
local czy_dokumentacja=((parametry_modul.CzyTak(frame.args["dokumentacja"])) or (parametry_modul.CzyTak(tabelka_parametrow_rodzica["dokumentacja"])));
if(czy_dokumentacja)then return;end;
local czy_dodaj_parametry_pudelka=parametry_modul.CzyTak(frame.args["dodaj parametry pudełka"]);
if(czy_dodaj_parametry_pudelka)then--dodaje parametry pudełka
tabelka_argumentow_systemowych_szablonu["parametry pudełka"]="";
tabelka_argumentow_systemowych_szablonu["bez błędu"]="";
tabelka_argumentow_systemowych_szablonu["bez szczegółów"]="";
--dodaje parametry nienazwane i dla parametru: 1, którego ewentualną pierwszą nazwą jest: cel--
local maksimum=parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(tabelka_parametrow_rodzica);
for i=1,maksimum,1 do
if(i>1)then
tabelka_argumentow_systemowych_szablonu[i]="txt!";
else
tabelka_argumentow_systemowych_szablonu[1]="txt!;cel";
end;
end;
tabelka_argumentow_systemowych_szablonu["cel"]="txt!;1"
end;
local tablica_mikroszablonow={
["{{+}}"]=";",
["{{!+}}"]="^",
["{{+!}}"]="$",
};
tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentow_systemowych_funkcji);
tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentow_systemowych_szablonu);
tabelka_bez_argumentow=parametry_modul["UsuńElementyTabeli"](tabelka_bez_argumentow,tabelka_argumentowa_ramki_szablon);
local zmienna_sprawdzania_parametrow=pf.args["zmienna sprawdzania parametrów"];
local zmienne_dodane={};
if(zmienna_sprawdzania_parametrow)then
local tabelka_zmiennych=mw.text.split(zmienna_sprawdzania_parametrow,";;",false);
for poz,war in ipairs(tabelka_zmiennych)do
local zmienna,wartosc=mw.ustring.match(war,"^%s*(.+)%s*=%s*(.*)%s*$")
if((zmienna)and(wartosc))then
zmienna=mw.text.trim(zmienna);
wartosc=mw.text.trim(wartosc);
zmienne_dodane[tonumber(zmienna) or mw.ustring.gsub(zmienna,"{{[^{}]+}}",tablica_mikroszablonow)]=wartosc;
end;
end;
end;
local zmienne_konieczne=function(tab,czy_odjete)
for k, v in pairs(tab)do
if(czy_odjete
or ((not tabelka_argumentow_systemowych_funkcji[k])
and(not tabelka_argumentowa_ramki_szablon[k])
and (not tabelka_argumentow_systemowych_szablonu[k])
and (not tabelka_bez_argumentow[k])
)
)then
local wydziel=mw.ustring.match(v,"^%s*(^.*$%s*%??%s*!?)%s*");
if wydziel and mw.ustring.match(wydziel, "!%s*$") then
required[k] = true
elseif mw.ustring.match(mw.ustring.match(v,"^([^;]*!?)%s*"), "!%s*$") then
required[k] = true
end
end;
end;
end;
zmienne_konieczne(frame.args,false);
zmienne_konieczne(zmienne_dodane,true);
zmienne_konieczne(tabelka_argumentow_systemowych_funkcji,true);
zmienne_konieczne(tabelka_argumentow_systemowych_szablonu,true);
zmienne_konieczne(tabelka_argumentowa_ramki_szablon,true);
local emptyArg = false
local Kind=function(k,kind)
if(not kind)then return;end;
if(tablica_dodatkowe_elementy)then
local element=tablica_dodatkowe_elementy[k];
return kind..(element and (";"..element) or "");
end;
return kind;
end;
local tab={};
local tab_ogolne={};
local obslugiwane=function(k)
if(tab_ogolne[k])then
local tab_szczegolne=tab_ogolne[k];
return tab_szczegolne[1],tab_szczegolne[2],tab_szczegolne[3];
end;
local kind=(not tabelka_argumentow_dodatkowych_funkcji[k]) and ((not tabelka_bez_argumentow[k])
and (tabelka_argumentow_systemowych_funkcji[k]
or tabelka_argumentowa_ramki_szablon[k]
or tabelka_argumentow_systemowych_szablonu[k]
or zmienne_dodane[k]
or frame.args[k]) or nil
) or nil;
kind=Kind(k,kind);
local zapytajnik;
local wykrzyknik;
if (kind) then
local kind2;local zmienne;
kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*(!?^.*$)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$");
if((not kind2)or(not zmienne)or (not zapytajnik))then
kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*(!?^.*$%s*%+[^;]-)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$");
if((not kind2)or(not zmienne)or (not zapytajnik))then
kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*([^;]-%s*%+%s*!?^.*$)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$");
if((not kind2)or(not zmienne)or (not zapytajnik))then
kind2,zapytajnik,wykrzyknik,zmienne=mw.ustring.match(kind,"^%s*([^;]-)%s*(%??)%s*(!?)%s*;%s*(.-)%s*$");
end;
end;
end;
if((kind2)and(zmienne))then
local tab2=mw.text.split(mw.text.trim(zmienne),"%s*;%s*",false);
tab[k]={};
for _,value in ipairs(tab2) do
value=mw.text.trim(value);
local indeks=tonumber(value) or mw.ustring.gsub(value,"{{[^{}]+}}",tablica_mikroszablonow);
local indeks2,wykrzyknik=mw.ustring.match(tostring(indeks),"^%s*(.*)%s*(!!?)%s*$");
local indeks3,zapytajnik=mw.ustring.match(tostring(indeks2 or indeks),"^%s*(.*)%s*(%?)%s*$");
local inne,indeks4=mw.ustring.match(tostring(indeks3 or indeks2 or indeks),"^%s*(!)%s*(.*)%s*$");
tab[k][indeks4 or indeks3 or indeks2 or indeks]={((not inne) and true or false),
((not wykrzyknik) and true or false),
((not zapytajnik) and true or false),
((not (wykrzyknik=="!!")) and true or false),
};
end;
kind=mw.ustring.gsub(kind2,"{{[^{}]+}}",tablica_mikroszablonow);
else
kind2,zapytajnik,wykrzyknik=mw.ustring.match(kind,"^%s*(!?%s*^.*$)%s*(%??)%s*(!?)%s*$");
if(not kind2)or(not zapytajnik)then
kind2,zapytajnik,wykrzyknik=mw.ustring.match(kind,"^%s*(.-)%s*(%??)%s*(!?)%s*$");
end;
kind=mw.ustring.gsub(kind2,"{{[^{}]+}}",tablica_mikroszablonow);
end;
end;
kind=kind and mw.text.trim(kind);
tab_ogolne[k]={kind,wykrzyknik,zapytajnik,};
return kind,wykrzyknik,zapytajnik;
end;
local function inne_elementy_nieobslugiwane(k)
local element=tab[k]
if(element)then
for name2, wartosc in pairs(element)do
if(name2~=k)then
if(not wartosc[1])then
if(not wartosc[2] and not wartosc[3])then
if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2])
and(((wartosc[4])and
(#tabelka_parametrow_rodzica[name2]>0)
)or((not wartosc[4])and(#tabelka_parametrow_rodzica[name2]==0)))
)then
return true;
end;
elseif(not wartosc[2] and wartosc[3])then
return true;
elseif(wartosc[2] and not wartosc[3])then
if((obslugiwane(name2))and(
(not tabelka_parametrow_rodzica[name2])
or(tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]==0))
)then
return true;
end;
end;
end;
end;
end;
end;
return false;
end;
local function inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(k,tak)
local element=tab[k];
if(element)then
for name2, wartosc in pairs(element)do
if(name2~=k)then
if(wartosc[1])then
if(wartosc[2])then
if(not wartosc[3])then
if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then
if(#tabelka_parametrow_rodzica[name2]>0)then
if(tak)then
if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
return true;
end;
else
return true;
end;
end;
end;
elseif((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then
return true;
end;
end;
end;
end;
end;
else
local kind=obslugiwane(k);
end;
return false;
end;
local tab_konieczne_puste={};
local function inne_elementy_konieczne(k)
local element=tab[k]
if(element)then
for name2,wartosc in pairs(element)do
if(name2~=k)then
if(obslugiwane(name2))then
if((wartosc[1])and(not wartosc[2])and(wartosc[3]))then
if(not tabelka_parametrow_rodzica[name2])then
table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2));
return true;
end;
elseif((wartosc[1])and(not wartosc[2])and(not wartosc[3]))then
if(not tabelka_parametrow_rodzica[name2])then
if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
return true;
end;
elseif(#tabelka_parametrow_rodzica[name2]>0)then
if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
return true;
end;
end;
end;
end;
end;
end;
end;
return false;
end;
local function inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k)
local element=tab[k];
if(element)then
local tak=false;
for name2, wartosc in pairs(element)do
if(name2~=k)then
if(wartosc[1])then
if((wartosc[4])and(not wartosc[2])and(not wartosc[3]))then
if(obslugiwane(name2))then
if(
(not tabelka_parametrow_rodzica[name2])
or(#tabelka_parametrow_rodzica[name2]==0)
)then
if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
return true;
end;
--elseif((tabelka_parametrow_rodzica[name2]))and(#tabelka_parametrow_rodzica[name2]>0)then
--if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
--return true;
--end;
end;
end;
end;
end;
end;
end;
end;
return false;
end;
local function inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k)
local element=tab[k];
local czy=false;
if(element)then
for name2, wartosc in pairs(element)do
if(name2~=k)then
if(wartosc[1])then
if((not wartosc[4])and(not wartosc[2])and(not wartosc[3]))then
if((obslugiwane(name2))and(
(not tabelka_parametrow_rodzica[name2])
or((tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]>0))
))then
return true;
end;
end;
end;
end;
end;
end;
return czy;
end;
local strony_modul=require("Module:Strony");
local NumerPlik=function(k,v,zapytajnik,tryb)
local czy_zapytajnik=(zapytajnik~="?");
local zero=(czy_zapytajnik and(#v==0));
if(zero)then
table.insert(invalid, argName(k));
elseif((czy_zapytajnik)or((not czy_zapytajnik)and(#v~=0)))then
local u=strony_modul.SprawdzanieRozmiaruPliku{rozmiar=v,tryb=tryb,};
if not u then table.insert(invalid,argName(k)) end;
end;
end;
local GrafikaPlik=function(k,v,zapytajnik,przestrzen)
local czy_zapytajnik=(zapytajnik~="?");
local zero=(czy_zapytajnik and(#v==0));
if(zero)then
table.insert(invalid, argName(k))
elseif((czy_zapytajnik)or((not czy_zapytajnik)and(#v~=0)))then
if strony_modul.ZnajdowanieNormalnychStronHttp(v) then
table.insert(nakedurl, argName(k))
else
local g = strony_modul.SprawdzanieNazwyPlikowe{nazwa = v, ["przestrzeń"]=przestrzen, };
if not g then table.insert(invalid, argName(k)) end
end;
end;
end;
for k, v in pairs(tabelka_parametrow_rodzica) do
required[k] = false;
local kind,wykrzyknik,zapytajnik=obslugiwane(k)
if k == "" then
emptyArg = v
elseif not kind or inne_elementy_nieobslugiwane(k) then
table.insert(unknown, argName(k))
elseif inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(k,true) then
table.insert(repeated, argName(k));
elseif (inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k)) then
table.insert(empty, k);
elseif (inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k) ) then
table.insert(noempty, k);
elseif inne_elementy_konieczne(k) then
table.insert(konieczne, k);
else
local old,__kind=mw.ustring.match(kind,"^%s*(old)%s*%+%s*(.-)%s*$");
if(not old or not __kind)then
__kind,old=mw.ustring.match(kind,"^%s*(.-)%s*%+%s*(old)%s*$");
end;
if(old and __kind)then
table.insert(deprecated, argName(k));
kind=__kind;
end;
if(kind == "")then
-- Kod pusty
elseif (kind == "num") then
if(zapytajnik~="?")then
local n = tonumber(v)
if not n then table.insert(invalid, argName(k)) end
else
local n = (#v == 0) or tonumber(v)
if not n then table.insert(invalid, argName(k)) end
end;
elseif (kind == "uri") then
if(zapytajnik~="?")then
local u = strony_modul.SprawdzanieURL(v)
if not u then table.insert(invalid, argName(k)) end
else
local u = (#v == 0) or strony_modul.SprawdzanieURL(v)
if not u then table.insert(invalid, argName(k)) end
end;
elseif(kind=="txt")then
if(zapytajnik~="?")then
if #v == 0 then table.insert(invalid, argName(k)) end;
end;
elseif (kind=="all")then
local zero=((zapytajnik~="?")and(#v==0));
if(zero)then
table.insert(invalid, argName(k));
else
local u = strony_modul.SprawdzanieURL(v);
if u then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieNormalnychStronHttp(v);
if(u)then
table.insert(nakedurl, argName(k))
end;
end;
end;
elseif(kind=="grafika")then
GrafikaPlik(k,v,zapytajnik,false);
elseif(kind=="grafika*")then
GrafikaPlik(k,v,zapytajnik,true);
elseif (kind == "text") then
local zero=((zapytajnik~="?")and(#v==0));
if(zero)then
table.insert(invalid, argName(k))
else
local u= strony_modul.ZnajdowaniePlikowe(v);
if(u)then
table.insert(files, argName(k))
else
local u = strony_modul.SprawdzanieURL(v);
if u then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieNormalnychStronHttp(v);
if(u)then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieJakikolwiekStronHttp(v)
if(u)then
table.insert(exturl, argName(k))
end;
end;
end;
end;
end;
elseif(kind == "text-img")then
local zero=((zapytajnik~="?")and(#v==0));
if(zero)then
table.insert(invalid, argName(k))
else
local u = strony_modul.SprawdzanieURL(v);
if u then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieNormalnychStronHttp(v);
if(u)then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieJakikolwiekStronHttp(v)
if(u)then
table.insert(exturl, argName(k))
end;
end;
end;
end;
elseif((kind == "text-link")or(kind == "tekst"))then
local zero=((zapytajnik~="?")and(#v==0));
if(zero)then
table.insert(invalid, argName(k))
else
local u= strony_modul.ZnajdowaniePlikowe(v);
if(u)then
table.insert(files, argName(k))
else
local u = strony_modul.SprawdzanieURL(v);
if u then
table.insert(nakedurl, argName(k))
else
local u = strony_modul.ZnajdowanieNormalnychStronHttp(v);
if(u)then
table.insert(nakedurl, argName(k))
end;
end;
end;
end;
elseif ((not old)and(kind == "old")) then
table.insert(deprecated, argName(k));
elseif(kind == "uri*")then
local zero=((zapytajnik~="?")and(#v==0));
if(zero)then
table.insert(invalid, argName(k))
else
local u = strony_modul.SprawdzanieURL(v) or strony_modul.SprawdzanieURL(mw.text.unstripNoWiki(v))
if not u then table.insert(invalid, argName(k)) end
end;
elseif(kind=="rozmiar")then
NumerPlik(k,v,zapytajnik,false);
elseif(kind=="rozmiar*")then
NumerPlik(k,v,zapytajnik,true);
elseif(kind~="")then
local function regex(kind)
local tab_pattern_wykrzyknik_lub_nie_wzorow={};
local pattern_poczatek=kind;
local function funkcja_zbierajacy_dane_patternow(pattern_analiza_wzorow_koniunkcji)
local tab_split_pattern_koniunkcji={};
local pattern_poczatek=pattern_analiza_wzorow_koniunkcji;
repeat
local pattern_poczatek_2,pattern_koniec=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*&%s*(.*)%s*$");
if(pattern_poczatek_2 and pattern_koniec)then
table.insert(tab_split_pattern_koniunkcji,pattern_poczatek_2);
pattern_poczatek=pattern_koniec;
else
local pattern_caly=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*$");
if pattern_caly then
table.insert(tab_split_pattern_koniunkcji,pattern_caly);
end;
end;
until not pattern_poczatek_2;
local tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji={};
for _,wartosc_elementu_koniunkcji in ipairs(tab_split_pattern_koniunkcji)do
local wykrzyknik,pattern=mw.ustring.match(wartosc_elementu_koniunkcji,"^%s*(!?)%s*(^.-$)%s*$");
table.insert(tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji,{[1]=pattern,[2]=wykrzyknik});
end;
table.insert(tab_pattern_wykrzyknik_lub_nie_wzorow,tab_pattern_wykrzyknik_lub_nie_wzorow_koniunkcji);
end;
repeat
local pattern_poczatek_2,pattern_koniec=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*|%s*(.*)%s*$");
if pattern_poczatek_2 and pattern_koniec then
funkcja_zbierajacy_dane_patternow(pattern_poczatek_2);
pattern_poczatek=pattern_koniec;
else
local pattern_caly=mw.ustring.match(pattern_poczatek,"^%s*(!?%s*^.-$)%s*$");
if(pattern_caly)then
funkcja_zbierajacy_dane_patternow(pattern_caly);
end;
break;
end;
until not pattern_poczatek_2;
if(#tab_pattern_wykrzyknik_lub_nie_wzorow>0)then
for _ , tab_pattern_koniunkcja in ipairs(tab_pattern_wykrzyknik_lub_nie_wzorow) do
local czy=true;
for _,tab_pattern_elementy_koniunkcji in ipairs(tab_pattern_koniunkcja)do
local pattern=tab_pattern_elementy_koniunkcji[1];
local wykrzyknik_negujacy_pattern=(tab_pattern_elementy_koniunkcji[2]=="!");
if(pattern)then
if((not wykrzyknik_negujacy_pattern and mw.ustring.match(v, pattern))or(wykrzyknik_negujacy_pattern and not mw.ustring.match(v, pattern)))then
czy=czy and true;
if(not czy)then
break;
end;
else
czy=false;
break;
end;
end
end;
if(czy)then return true;end;
end;
return false;
end;
return nil;
end;
if((zapytajnik)and((zapytajnik=="")or((zapytajnik=="?")and(#v>0))))then
local wynik=regex(kind);
if((type(wynik)~="nil")and(not wynik))then
table.insert(invalid, argName(k));
elseif (#v > 0) and strony_modul.SprawdzanieURL(v) then
table.insert(nakedurl, argName(k))
elseif strony_modul.ZnajdowanieNormalnychStronHttp(v) then
table.insert(nakedurl, argName(k))
end;
end;
end
end;
end;
local missing = {}
local function inny_element2(k)
local element=tab[k]
if(element)then
for name2,wartosc in pairs(element)do
if((wartosc[2])and(k~=name2))then
if((obslugiwane(name2))and(tabelka_parametrow_rodzica[name2]))then
return true;
end;
end;
end;
end;
for name,value in pairs(tab)do
for name2,wartosc in pairs(value)do
if((wartosc[2])and(name2==k)and(name2~=name))then
if((obslugiwane(name))and(tabelka_parametrow_rodzica[name]))then
return true;
end;
end;
end;
end;
return false;
end;
for k, v in pairs(required) do
if v and not inny_element2(k) then
table.insert(missing, argName(k))
end
end
local czy_not_category=parametry_modul.CzyTak(tabelka_parametrow_rodzica["bez kategorii"]);
local function Szablon_z_sprawdz_parametry()
if(czy_not_category)then return "";end;
local nazwy_modul=require("Module:Nazwy");
local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(nazwy_modul["PEŁNANAZWASTRONY"]());
if(templateName==nazwa_szablonu)then
local sprawdz_modul=require("Module:Sprawdź");
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
return "[["..nazwy_np_modul.Category..":"..sprawdz_modul["NazwaKategoriiSprawdzaniaParametrówSzablonu"]().."|"..nazwy_modul["NAZWASTRONY"]().."]]";
end;
return "";
end;
local czy_missing=parametry_modul["CzySąElementyNumerowaneTablicy"](missing);
local czy_konieczne=parametry_modul["CzySąElementyNumerowaneTablicy"](konieczne);
local czy_unknown=parametry_modul["CzySąElementyNumerowaneTablicy"](unknown);
local czy_invalid=parametry_modul["CzySąElementyNumerowaneTablicy"](invalid);
local czy_deprecated=parametry_modul["CzySąElementyNumerowaneTablicy"](deprecated);
local czy_repeated=parametry_modul["CzySąElementyNumerowaneTablicy"](repeated);
local czy_empty=parametry_modul["CzySąElementyNumerowaneTablicy"](empty);
local czy_noempty=parametry_modul["CzySąElementyNumerowaneTablicy"](noempty);
local czy_files=parametry_modul["CzySąElementyNumerowaneTablicy"](files);
local czy_nakedurl=parametry_modul["CzySąElementyNumerowaneTablicy"](nakedurl);
local czy_exturl=parametry_modul["CzySąElementyNumerowaneTablicy"](exturl);
if ((not czy_missing) and (not czy_konieczne) and (not czy_unknown) and (not czy_invalid) and (not czy_deprecated) and (not czy_repeated) and (not czy_empty) and (not czy_noempty) and (not czy_files) and (not czy_nakedurl) and (not czy_exturl) and (not emptyArg)) then
return Szablon_z_sprawdz_parametry();
end
local czy_informacje=not (parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń dodatkowe informacje"]));
local result;
if(czy_informacje)then
result=mw.html.create("span")
result:addClass("problemy");
result:addClass("error");
result:css('white-space','pre-line');
result:css('font-size','unset');
end;
local typ;
local typ_jednostki;
local czy_nazwij_jednostka=parametry_modul.CzyTak(tabelka_parametrow_rodzica["nazwij jednostką"]);
----[""]=?---
local config = frame.args[""]
local class, space, category = string.match(config or "", "^%s*(%S+)(%s+)(.-)%s*$")
local nl = space and string.match(space, "\n") or ""
class = class or config
----
if(((czy_informacje)and(not czy_nazwij_jednostka))or((category)and((not czy_not_category)and(mw.ustring.match(category,"%%s.-%%s")))))then
--local frame2=pf:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local pudelko_modul=require("Module:Pudełko");
typ_jednostki=pudelko_modul["Typ jednostki 2"]{args={
["obsługiwane jednostki jako nieopisowe strony"]="tak",
["nazwa przestrzeni nazw"]=pf and pf.args["tytuł przestrzeni nazw"] or frame.args["tytuł przestrzeni nazw"],
["nazwa jednostki"]=pf and pf.args["tytuł jednostki"] or frame.args["tytuł jednostki"],
["typ jednostki"]=pf and pf.args["rodzaj jednostki"] or frame.args["rodzaj jednostki"],
},};
if(typ_jednostki=="artykuł")then
typ="(artykuły)";
elseif(typ_jednostki=="artykuł dla dzieci")then
typ="(artykuły dla dzieci)";
elseif(typ_jednostki=="strona użytkownika")then
typ="(strony użytkowników)";
elseif(typ_jednostki=="strona brudnopisu projektu")then
typ="(strony brudnopisu projektu)";
else
typ="(strony niepodręcznikowe)";
end;
else
typ=nil;
end;
if(czy_informacje)then
if(not czy_nazwij_jednostka)then
if typ_jednostki=="artykuł" or typ_jednostki=="artykuł dla dzieci" or typ_jednostki=="strona użytkownika" or typ_jednostki=="strona brudnopisu projektu" then
result:css("display", "none");
result:css("color","black");
else
result:css("color", "red")
end
else
result:css("color", "red")
end;
end;
local czy_warning=not (parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń ostrzeżenie"]));
local message;
if(czy_informacje or czy_warning)then
local function tab_inne_elementy_konieczne(k)
local element=tab[k]
local tab_konieczne={};
if(element)then
for name2,wartosc in pairs(element)do
if(name2~=k)then
if(obslugiwane(name2))then
if((wartosc[1])and(not wartosc[2])and(wartosc[3]))then
if(not tabelka_parametrow_rodzica[name2])then
if(not tab_konieczne[1])then tab_konieczne[1]={};end;
table.insert(tab_konieczne_puste[1],argName(tonumber(name2) or name2));
end;
elseif((wartosc[1])and(not wartosc[2])and(not wartosc[3]))then
if(not tabelka_parametrow_rodzica[name2])then
if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
if(not tab_konieczne[2])then tab_konieczne[2]={};end;
table.insert(tab_konieczne[2],argName(tonumber(name2) or name2));
end;
elseif(#tabelka_parametrow_rodzica[name2]>0)then
if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
if(not tab_konieczne[3])then tab_konieczne[3]={};end;
table.insert(tab_konieczne[3],argName(tonumber(name2) or name2));
end;
end;
end;
end;
end;
end;
end;
return tab_konieczne;
end;
local function tab_inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(k)
local element=tab[k];
local tab_konieczne_puste={};
if(element)then
for name2,wartosc in pairs(element)do
if(name2~=k)then
if(wartosc[1])then
if((wartosc[4])and(not wartosc[2])and(not wartosc[3]))then
if(obslugiwane(name2))then
if(
(not tabelka_parametrow_rodzica[name2])
or(#tabelka_parametrow_rodzica[name2]==0)
)then
if(not inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2));
end;
--elseif((tabelka_parametrow_rodzica[name2]))and(#tabelka_parametrow_rodzica[name2]>0)then
--if(inne_elementy_powtarzane_i_z_mozliwymi_dopuszczalnymi_pustymi_wartosciami(name2))then
--return true;
--end;
end;
end;
end;
end;
end;
end;
end;
return tab_konieczne_puste;
end;
local function tab_inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(k)
local element=tab[k];
local tab_konieczne_puste={};
if(element)then
for name2,wartosc in pairs(element)do
if(name2~=k)then
if(wartosc[1])then
if((not wartosc[4])and(not wartosc[2])and(not wartosc[3]))then
if((obslugiwane(name2))and(
(not tabelka_parametrow_rodzica[name2])
or((tabelka_parametrow_rodzica[name2])and(#tabelka_parametrow_rodzica[name2]>0))
))then
table.insert(tab_konieczne_puste,argName(tonumber(name2) or name2));
end;
end;
end;
end;
end;
end;
return tab_konieczne_puste;
end;
message=mw.html.create()
if emptyArg then
message:wikitext("Podano parametr o nazwie pustej o wartosci: |=", emptyArg, "|.<br/>")
end
if czy_missing then
message:wikitext("Brakujące pola, które powinny być koniecznie podane: ", mw.text.listToText(missing), ".<br/>")
end
if czy_konieczne then
for _,_konieczne in ipairs(konieczne) do
local tab_element=tab_inne_elementy_konieczne(_konieczne);
if(tab_element[1])then
message:wikitext("Konieczne pola, które powinny być używane ze wszystkimi parametrami, dla argumentu: "..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[1])..".<br/>")
end;
if(tab_element[2])then
message:wikitext("Konieczne pola, które nie istnieją, a inne też konieczne, ale są puste, dla parametru:"..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[2])..".<br/>")
end;
if(tab_element[3])then
message:wikitext("Konieczne pola, które nie powinny być używane ze wszystkimi parametrami dla argumentu: "..argName(_konieczne)..", z listy: "..mw.text.listToText(tab_element[3])..".<br/>")
end;
end;
end
if czy_invalid then
message:wikitext("Pola, mają nieprawidłową wartość, dla parametrów z listy: ", mw.text.listToText(invalid), ".<br/>")
end
if czy_unknown then
message:wikitext("Nieznane pola używane przez szablon: ", mw.text.listToText(unknown), ".<br/>")
end
if czy_deprecated then
message:wikitext("Przestarzałe pola, które są obsługiwane, ale których nie powinno się raczej używać: ", mw.text.listToText(deprecated), ".<br/>")
end
if czy_repeated then
message:wikitext("Pola, o podanej wartości lub same pozycje, dla parametrów z listy: ", mw.text.listToText(repeated), ", nie powinny jednocześnie ze sobą współistnieć.<br/>")
end
if czy_empty then
for _,_empty in ipairs(empty) do
message:wikitext("Dla pola "..argName(_empty).." wykryto wartości z pustymi polami: "..mw.text.listToText(tab_inne_elementy_z_mozliwymi_koniecznymi_niepustymi_wartosciami(_empty))..", które, któreś z nich lub wszystkie, powinny być niepuste.<br/>")
end;
end
if czy_noempty then
for _,_noempty in ipairs(noempty) do
message:wikitext("Dla pola "..argName(_noempty).." wykryto wartości z niepustymi polami: "..mw.text.listToText(tab_inne_elementy_z_mozliwymi_koniecznymi_pustymi_wartosciami(_noempty))..", które powinny być puste.<br/>")
end;
end
if czy_files then
for _,_files in ipairs(files) do
message:wikitext("Dla pola "..argName(_files).." wykryto nieoczekiwaną grafikę: " .. mw.text.listToText(files) .. ".")
end;
end;
if czy_nakedurl then
for _,_nakedurl in ipairs(nakedurl) do
message:wikitext("Dla pola "..argName(_nakedurl).." wykryto gołe linki: " .. mw.text.listToText(nakedurl) .. ".")
end;
end;
if czy_exturl then
for _,_exturl in ipairs(exturl) do
message:wikitext("Dla pola "..argName(_exturl).." wykryto linki zewnętrzne: " .. mw.text.listToText(exturl) .. ".")
end;
end;
end;
local warning;
if(czy_warning)then
warning = mw.html.create('span');
warning:css('color','red');
warning:css('white-space','pre-line');
warning:css('word-break','break-all');
warning:addClass("problemy");
end;
if(templateName)then
mw.logObject(templateName, "templateName")
local dwukropek=mw.ustring.match(templateName,"^%s*:");
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni_strony=nazwy_modul["NAZWAPRZESTRZENI"](templateName);
local wywolanie;local wywolanie2;
local szablonowe_modul=require("Module:Szablonowe");
if dwukropek or nazwa_przestrzeni_strony~="" then
wywolanie=szablonowe_modul["PokazanieWywołaniaSzablonu"](templateName,tabelka_parametrow_rodzica);
wywolanie2="{{"..templateName.."}}";
if(parametry_modul.CzyTak(category))then
templateName=mw.ustring.gsub(templateName,"^%s*:","");
if(not czy_not_category)then
if(typ)then
category=mw.ustring.format(category,templateName,typ);
else
category=mw.ustring.format(category,templateName);
end;
category=pf:preprocess(category);
end;
class=mw.ustring.format(class,mw.ustring.gsub(templateName,"%s+","-"));
end;
else
wywolanie=szablonowe_modul["PokazanieWywołaniaSzablonu"](templateName,tabelka_parametrow_rodzica);
wywolanie2="{{"..templateName.."}}";
if(parametry_modul.CzyTak(category))then
local bez_pierwszej_litery=mw.ustring.match(templateName,"^.(.*)");
local czy_jest_wielka_litera=mw.ustring.match(bez_pierwszej_litery,"%u");
local szablon;
if(not czy_jest_wielka_litera)then szablon=mw.getContentLanguage():lcfirst(templateName);else szablon=templateName;end;
if(not czy_not_category)then
if(typ)then
category=mw.ustring.format(category,szablon,typ);
else
category=mw.ustring.format(category,szablon);
end;
category=pf:preprocess(category);
end;
class=mw.ustring.format(class,mw.ustring.gsub(szablon,"%s+","-"));
end;
end
if(czy_warning)then
local strong = mw.html.create('strong');
strong:wikitext("Wywołanie ")
local span = mw.html.create('span');
span:css('font-weight','normal');
span:css('white-space','pre');
span:css('color',"brown");
span:wikitext(wywolanie);
local strong2=mw.html.create('strong');
strong2:wikitext(" z wykrytymi parametrami z nieprawidłościami:<br/>");
warning:node(strong);
warning:node(span);
warning:node(strong2);
end;
if(czy_informacje)then
local strong = mw.html.create('strong');
strong:wikitext("Szablon "..wywolanie2.." z wykrytymi parametrami z nieprawidłościami:<br/>");
result:node(strong);
end;
end;
local czy_usun_linkowanie=parametry_modul.CzyTak(tabelka_parametrow_rodzica["usuń linkowanie"]);
if(not czy_usun_linkowanie)then
local _ = mw.title.new("Module:Sprawdź/Wywołanie funkcji/Parametry").id;
end;
if(czy_informacje or czy_warning)then
message = tostring(message)
end;
if(czy_warning)then
warning:wikitext(message);
mw.addWarning(tostring(warning));
end;
if czy_informacje and class then
result:addClass(class)
end
if(czy_informacje)then result:wikitext(message);end;
local str_category;
if not czy_not_category and category then
str_category=category;
else
str_category="";
end
return nl..((czy_informacje)and tostring(result:allDone()) or "")..str_category..Szablon_z_sprawdz_parametry();
end,
["odn"] = function(frame)
local pf = frame:getParent()
local i = 1
local problems = false
local yeardetected = false
while true do
local arg = pf.args[i]
if not arg then
problems = i == 1 and "brak argumentów" or false
break
end
if (i > 5) or yeardetected then
problems = "za dużo argumentów pozycyjnych"
break
end
if #arg == 0 then
problems = "pusty argument"
break
end
if arg ~= mw.text.trim(arg) then
problems = "nieoczekiwane odstępy na początku lub końcu argumentu"
break
end
if string.match(arg, "^%d+%l?$") then
yeardetected = true
if i == 1 then
problems = "rok musi być ostatnim parametrem po nazwiskach autorów"
break
end
elseif string.match(arg, "^s[%-%.:]%s*%d+") then
problems = "prawdopodobnie nieprawidłowo podany numer strony"
break
elseif string.match(arg, "%s%s") then
problems = "podwójne odstępy"
break
elseif mw.ustring.match(arg, "^%a+%d") then
if not mw.ustring.match(arg, "^[%u%d]+$") then
problems = "prawdopodobnie sklejone argumenty (brak pionowej kreski)"
break
end
elseif mw.ustring.match(arg, "^OdeB ") then
-- [[Ordre de Bataille]]
elseif mw.ustring.match(arg, "^%u%l+%u") then
local justification = {
["De"] = true,
["Del"] = true,
["Di"] = true,
["Le"] = true,
["Mac"] = true,
["Mc"] = true,
["Te"] = true, -- TeSelle
["Sar"] = true, -- SarDesai
["Van"] = true, -- VanBuren
["La"] = true, -- LaSalle
}
if not justification[mw.ustring.match(arg, "^%u%l+")] then
problems = "prawdopodobnie sklejone argumenty (brak pionowej kreski)"
break
end
end
i = i + 1
end
if not problems then
local odn = pf.args.odn
if odn and ((#odn ~= 1) or (odn < "a") or (odn > "z")) then
problems = "nieoczekiwany parametr odn"
end
end
if not problems then
local s = pf.args.s
if s and string.match(s, "&[a-z]+;") then
problems = "użyto encji HTML w numerze strony"
end
end
if not problems then
if pf.args.strona or pf.args.ss or pf.args.strony or pf.args.p or pf.args.page or pf.args.pp or pf.args.pages then
problems = "przestarzały parametr z numerem strony"
end
end
if not problems then
return nil
end
local result = mw.html.create("span"):addClass("problemy-w-odn")
local frame2=pf:newChild{args = {["obsługiwane jednostki jako nieopisowe strony"]="tak"}}
local typ_jednostki=require("Module:Pudełko")["Typ jednostki 2"](frame2)
if typ_jednostki=="artykuł" or typ_jednostki=="artykuł dla dzieci" or typ_jednostki=="strona użytkownika" or typ_jednostki=="strona brudnopisu projektu" then
result:css("display", "none")
else
result:css("color", "red")
end
local typ;
if(typ_jednostki=="artykuł")then
typ="artykuły";
elseif(typ_jednostki=="artykuł dla dzieci")then
typ="artykuły dla dzieci";
elseif(typ_jednostki=="strona użytkownika")then
typ="strony użytkowników";
elseif(typ_jednostki=="strona brudnopisu projektu")then
typ="strony brudnopisu projektu";
else
typ="strony niepodręcznikowe";
end;
local kategorie_modul=require("Module:Kategorie");
local str_kategoria=kategorie_modul.Kategoria{args={[1]="Szablon odn ("..typ..") do sprawdzenia"}};
result:wikitext(str_kategoria);
result:wikitext("ODN: ", problems)
return tostring(result)
end,
["Wikidane"] = function(frame)
local property = frame.args.cecha
local field = frame.args.pole
local value = frame.args[1]
if not property or not field then
return
end
if not value then
value = frame:getParent().args[field]
if not value or (#value == 0) then
return
end
end
local entity = mw.wikibase.getEntity()
if not entity or not entity.claims or not entity.claims[property] then
return
end
for i, v in ipairs(entity.claims[property]) do
if v.mainsnak.snaktype == "value" then
if value == v.mainsnak.datavalue.value then
return
end
end
end
local template = frame:getParent():getTitle()
local infobox = mw.ustring.match(template, "^Szablon:(.- infobox)$")
return mw.ustring.format("[[Kategoria:%s – niezgodność w Wikidanych – %s – %s]]", infobox and "Infoboksy" or "Szablony", infobox or template, field)
end,
["bez parametrów"] = function(frame)
for k, v in pairs(frame:getParent().args) do
return nil
end
return "tak"
end,
["pole z hostem"] = function (frame)
local host = frame.args.host
if host and (#host > 0) then
for k, v in pairs(frame:getParent().args) do
local link = string.match(v, "[hH][tT][tT][pP][sS]?://[%S]+")
if link then
local uri = mw.uri.new(link)
local valid, _ = mw.uri.validate(uri)
if valid and uri.host and (#uri.host > 0) then
if host == uri.host then
mw.logObject({k, link}, "cały")
return k
end
if #host < #uri.host then
local s1 = '.'..host
local s2 = string.sub(uri.host, -#s1)
if s1 == s2 then
mw.logObject({k, link}, "fragment")
return k
end
end
end
end
end
end
end,
["pola z autorami"] = function (frame)
local result = {}
local nazwisko = frame.args["nazwisko"]
local imie = frame.args["imię"]
local autor = frame.args["autor"]
local link = frame.args["link"]
local maxIndex = tonumber(frame.args["max"])
local prefix = frame.args["przed"] or ""
local suffix = frame.args["po"] or ""
for i = 1, maxIndex do
local s = i == 1 and "" or tostring(i)
local nin = string.gsub(nazwisko, '#', s)
local iin = string.gsub(imie, '#', s)
local ain = string.gsub(autor, '#', s)
local lin = string.gsub(link, '#', s)
local niv = frame:getParent().args[nin]
local iiv = frame:getParent().args[iin]
local aiv = frame:getParent().args[ain]
local liv = frame:getParent().args[lin]
local nis = niv and (#niv > 0)
local iis = iiv and (#iiv > 0)
local ais = aiv and (#aiv > 0)
local lis = liv and (#liv > 0)
local bad = (nis and ais) -- nazwisko -> zbędny autor
or (nis and not iis) -- nazwisko bez imienia
or (lis and not nis and not ais) -- tylko link
or (iis and not nis) -- imię bez nazwiska
if bad then
table.insert(result, i)
end
end
if #result > 0 then
return prefix..mw.text.listToText(result)..suffix
end
end,
["pola z gołymi linkami"] = function (frame)
local result = {}
for k, v in pairs(frame:getParent().args) do
local link = string.match(v, "^[hH][tT][tT][pP][sS]?://[%S]+")
if link then
local justified = frame.args[k]
if not justified then
mw.logObject(v,k)
table.insert(result, '"'..k..'"')
end
end
end
return mw.text.listToText(result)
end,
["uri"] = function(frame)
mw.logObject(frame:getParent():getTitle(), "parent:title")
_ = mw.title.new("Moduł:Sprawdź/deprecated/uri").id
local link = frame.args["link"]
local space = frame.args["spacja"]
local strony_modul=require("Module:Strony");
local check = strony_modul.SprawdzanieURL(link)
if check then
return link
end
return (space and (check ~= nil)) and link or ""
end,
["url"] = function(frame)
local link = frame.args[1]
local okText = frame.args[2] or "ok"
local isValid = string.find(link, '{{{') == 1 or checkUri(link)
if isValid then
return okText
end
return ""
end,
["lista nazw niepustych argumentów"] = function(frame)
local argNames = {}
for k, v in pairs(frame:getParent().args) do
if #mw.text.trim(v) > 0 then
table.insert(argNames, tostring(k))
end
end
return table.concat(argNames, ", ")
end,
}
bv4577z22sxmy3rjmypit8bcqjana6z
Szablon:Cytuj/opis
10
31190
556527
499737
2026-09-15T08:36:52Z
Persino
2851
556527
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
{{Lua|Cytuj}}
{{Wysokie ryzyko|częste użycie}}
{{Wysokie ryzyko|skomplikowany}}
{{Szablony cytowania}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Uniwersalny szablon cytowania źródeł. Jest to mocno uproszczona wersja standardowych szablonów cytowania: {{s|Cytuj książkę}}, {{s|Cytuj pismo}} i {{s|Cytuj stronę}}. Dzięki integracji zapewnia spójny wygląd wszystkich przypisów i pozycji bibliograficznych.
=== Autorzy ===
Wszystkie pola, w których przekazywany jest autor podlegają analizie, dzięki której automatycznie znajdowane są imiona i nazwiska, a imiona są skracane. Do sterowania analizą służą znaki specjalne. Zobacz też przykłady na [[Szablon:Cytuj/test#Autorzy]].
{| class=wikitable
|-
! colspan="2" | znak
! opis
! przykład
|-
| średnik || (<kbd>;</kbd>)
| oddziela kolejnych autorów, umożliwia podawanie więcej niż jednego autora w jednym parametrze
| <kbd>…|… = Jan Kowalski; Adam Nowak |…</kbd>
|-
| przecinek || (<kbd>,</kbd>)
| oddziela kolejnych autorów albo jeśli w polu jest podany średnik to oddziela nazwisko od imion, gdy stosowany jest zapis katalogowy, tj. najpierw nazwisko a po nim imiona; przydatne również jeśli autor ma więcej niż jedno nazwisko
| <kbd> …|… = Kowalski, Jan; |…</kbd>
|-
| hash || (<kbd>#</kbd>)
| umieszczony przed pierwszym wyrazem oznacza, że jest to nazwisko, które powinno zawsze być zapisywane przed imionami; przydatne do przekazywania autorów azjatyckich
| <kbd> …|… = #Suzuki Ito |…</kbd>
<br>(Suzuki to nazwisko, a Ito to imię)
|-
| cudzysłowy || (<kbd>"…"</kbd>)
| umieszczony na początku i na samym końcu umożliwia wpisanie instytucji jako autorów; analiza zostaje całkowicie wyłączona, a treść wyświetlana bez zmian; przydatne do podania autorów-instytucji, np. przy cytowaniu dokumentów
| <kbd>…|… = "Zarząd Geodezji, Kartografii i Katastru Miejskiego we Wrocławiu" |…</kbd>
|-
| gwiazdka || (<kbd>*</kbd>)
| (odradzane) umieszczony na początku nazwy oznacza, że analiza nazwy ma zostać wyłączona, ale tylko dla danego fragmentu; co oznacza, że może powodować problemy jeśli w nazwie są przecinki, stąd łatwiej zwykle używać cudzysłów
| <kbd>…|… = * LifeTime Community Working Groups |…</kbd>
|-
|}
Jeśli autorów jest nie więcej niż trzech to w ich nazwach można stosować wikizację np. „<kbd>…|… = <nowiki>[[Jan Kowalski]]</nowiki> |…</kbd>”. Jeśli jest ich więcej to wikizacja ma sens jedynie dla pierwszego, gdyż jedynie pierwszy autor jest jawnie prezentowany. Pełna lista jest dostępna w dymku z podpowiedzią stowarzyszonym ze słowami „i inni” dodawanym bezpośrednio po pierwszym autorze. Prezentacja tych danych zależy od używanej przeglądarki.
; Uwaga : Użycie średnika jest praktycznie obowiązkowe jeśli jedyny autor ma dwuwyrazowe nazwisko. Przykłady poprawnie obsługiwanych wywołań to „<kbd><nowiki>[[Ignace de La Potterie|La Potterie, Ignace de]];</nowiki></kbd>” lub „<kbd>Del Soldato, Eva;</kbd>”.
Powyższa analiza jest ograniczana do kilkuset pierwszych bajtów treści pola.
Istnieją trzy pola <var>autor</var>, <var>redaktor</var> i <var>autor r</var>, dla których następujące kombinacje w ramach jednego wywołania są poprawne:
{| class=wikitable
|-
! wywołanie
! znaczenie
|-
| <kbd> … |autor = AAA |tytuł = XXX |… </kbd>
| podano autora(ów) całości publikacji
|-
| <kbd> … |redaktor = RRR |tytuł = XXX |… </kbd>
| podano redaktora(ów) całości publikacji
|-
| <kbd> … |autor r = BBB |rozdział = YYY |redaktor = RRR |tytuł = XXX |… </kbd>
| podano autora(ów) rozdziału oraz redaktora(ów) całości publikacji
|-
| <kbd> … |autor r = BBB |rozdział = YYY |autor = AAA |tytuł = XXX … |… </kbd>
| podano autora(ów) rozdziału oraz autorów całości publikacji
|}
=== Linki zewnętrzne ===
Za generowanie linków zewnętrznych odpowiadają dwa pola <var>url</var> i <var>archiwum</var>. Stowarzyszone z nimi są odpowiednio <var>data dostępu</var> i <var>zarchiwizowano</var>. Zasady poprawnego zapisu odwołania do źródeł dostępnych w sieci wymagają aby zawsze podawać datę dostępu do informacji. Istnieją serwisy internetowe, które w swoim adresie zawierają datę archiwizacji i pełen adres oryginalnego źródła. Pozwala to na uproszczenie wypełniania parametrów szablonu zgodnie z poniższą tabelą.
{| class=wikitable
! <var>url</var>
! <var>archiwum</var>
! Uwagi
|-
| ''podany''
| ''podany''
| Uniwersalna wersja na okoliczność wszelkich serwisów archiwizujących.
|-
| <kbd><nowiki>//web.archive</nowiki></kbd>
| ''brak''
| Metoda uproszczona, w której brakujące dane (<var>url</var>, <var>zarchiwizowano</var>) są automatycznie uzyskane z adresu do serwisu archiwizującego.
|-
| ''brak''
| ''podany''
| Brak pierwotnego adresu do serwisu oznacza, że cytowane treści są dostępne jedynie w formie zarchiwizowanej.
|-
| <kbd><nowiki></kbd>''podany''<kbd></nowiki></kbd>
| ''podany''
| Metoda pozwalająca na wyłączenie pierwotnego adresu do serwisu, co oznacza, że cytowane treści są dostępne jedynie w formie zarchiwizowanej.
|-
| ''brak''
| <kbd><nowiki>//web.archive</nowiki></kbd>
| Obsługiwana jest wersja uproszczona, w której data archiwizacji (<var>zarchiwizowano</var>) jest automatycznie uzyskana z adresu do serwisu archiwizującego.
|}
Adres przekazywany do <var>url</var> jest domyślne podłączany pod tytuł lub czasopismo, jeśli tytułu nie podano. Gdyby takie zachowanie było nieprawidłowe to należy z pola zrezygnować i zastosować standardowy zapis tworzenia linków zewnętrznych bezpośrednio w odpowiednim polu.
=== Patent ===
Cytowanie opisów patentowych umożliwia pole <var>patent</var>, w którym podaje się identyfikator patentu lub zgłoszenia patentowego. Nadaje ono specyficzne znaczenie następującym polom:
{| class="wikitable
! Pole
! Funkcja
! Opis
|-
| <var>autor</var>
| '''wnioskujący'''
| Podmiot składający wniosek, zazwyczaj przedsiębiorstwo lub instytucja państwowa zatrudniająca wynalazcę.
|-
| <var>inni</var>
| '''wynalazca'''
| Faktyczny odkrywca. Można go pominąć, jeśli jest także wnioskodawcą.
|-
| <var>data</var>
| '''data wydania''' lub '''data wniosku'''
| Znaczenie zależy od tego czy cytowany jest patent czy zgłoszenie patentowe.
|-
| <var>tytuł</var>
| tytuł
| Taki jak we wniosku patentowym.
|-
| <var>patent</var>
| '''identyfikator patentu'''
| Format wg tabeli poniżej.
|-
| <var>url</var>
| ''link pod tytułem'' lub <kbd>nie</kbd>
| Brak pola generuje link automatycznie. Wartość specjalna umożliwia jego wyłączenie, jeśli adres utworzony automatycznie nie wskazuje właściwego dokumentu.
|}
Identyfikator patentu lub zgłoszenia musi przyjąć jedną z następujących form:
{| class="wikitable"
! Wzór
! Opis
|-
| <kbd>XX #####</kbd>
| Identyfikator patentu z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w {{link-interwiki|Espacenet|Q=Q1050583}}.
|-
| <kbd>zgłoszenie XX #####</kbd>
| Identyfikator zgłoszenia patentowego z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w Espacenet.
|-
| <kbd>XX#####</kbd>
| Identyfikator patentu z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w [[w:Wyszukiwarka Google|Google]].
|-
| <kbd>zgłoszenie XX#####</kbd>
| Identyfikator zgłoszenia patentowego z kraju o kodzie XX i numerze #####. Generuje automatyczny link do wyszukiwarki patentów w Google.
|-
| <kbd>USPTO #####</kbd>
| Identyfikator amerykańskiego patentu o numerze #####. Generuje automatyczny link do wyszukiwarki patentów w tamtejszym urzędzie.
|-
| <kbd>USPTO #####</kbd>
| Identyfikator amerykańskiego zgłoszenia patentowego o numerze #####. Generuje automatyczny link do wyszukiwarki patentów w tamtejszym urzędzie.
|}
=== Narzędzia cytowania ===
Zestawienie narzędzi ułatwiających wstawianie szablonów cytowania znajduje się na stronie [[w:Wikipedia:Narzędzia cytowania|Wikipedia:Narzędzia cytowania]].
== Przykłady ==
; książka – podstawowe użycie
: <code><nowiki>* {{Cytuj |autor = [[w:Roman Murawski|Roman Murawski]] |tytuł = Filozofia matematyki |wydawca = [[w:Wydawnictwo Naukowe PWN|Wydawnictwo Naukowe PWN]] |miejsce = Warszawa |rozdział = całka |data = 2001 |isbn = 8301136049 |s = 12–15}}</nowiki></code>
:* {{Cytuj |autor = [[w:Roman Murawski|Roman Murawski]] |tytuł = Filozofia matematyki |wydawca = [[w:Wydawnictwo Naukowe PWN|Wydawnictwo Naukowe PWN]] |miejsce = Warszawa |rozdział = całka |data = 2001 |isbn = 8301136049 |s = 12–15}}
; książka – trzech autorów, tytuł z wikilinkiem, wydanie
: <code><nowiki>* {{Cytuj |autor = [[w:Joe Bloggs|Joe Bloggs]]; John Smith; Jim Smythe |tytuł = [[w:Tysiąc akrów|1000 akrów]] |wydanie = 2 |data = 1922 |wydawca = Gebethner i Wolff |s = 103}}</nowiki></code>
:* {{Cytuj |autor = [[w:Joe Bloggs|Joe Bloggs]]; John Smith; Jim Smythe |tytuł = [[w:Tysiąc akrów|1000 akrów]] |wydanie = 2 |data = 1922 |wydawca = Gebethner i Wolff |s = 103}}
; czasopismo naukowe
: <code><nowiki>* {{Cytuj |autor = Benoit Viollet, Fabrizio Andreelli, Sebastian B. Jørgensen, Christophe Perrin, Alain Geloen, Daisy Flamez, James Mu, Claudia Lenzner, Olivier Baud, Myriam Bennoun, Emmanuel Gomas, Gaël Nicolas, Jørgen F.P. Wojtaszewski, Axel Kahn, David Carling, Frans C. Schuit, Morris J. Birnbaum, Erik A. Richter, Rémy Burcelin, Sophie Vaulont |tytuł = The AMP-activated protein kinase α2 catalytic subunit controls whole-body insulin sensitivity |data = 2003 |czasopismo = The Journal of Clinical Investigation |doi = 10.1172/JCI16567 |wolumin = 111 |numer = 1 |pmid = 12511592 |pmc = 151837 |s = 91–98}}</nowiki></code>
:* {{Cytuj |autor = Benoit Viollet, Fabrizio Andreelli, Sebastian B. Jørgensen, Christophe Perrin, Alain Geloen, Daisy Flamez, James Mu, Claudia Lenzner, Olivier Baud, Myriam Bennoun, Emmanuel Gomas, Gaël Nicolas, Jørgen F.P. Wojtaszewski, Axel Kahn, David Carling, Frans C. Schuit, Morris J. Birnbaum, Erik A. Richter, Rémy Burcelin, Sophie Vaulont |tytuł = The AMP-activated protein kinase α2 catalytic subunit controls whole-body insulin sensitivity |data = 2003 |czasopismo = The Journal of Clinical Investigation |doi = 10.1172/JCI16567 |wolumin = 111 |numer = 1 |pmid = 12511592 |pmc = 151837 |s = 91–98}}
; strona WWW
: <code><nowiki>* {{Cytuj |url = https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05 |data dostępu = 2022-01-24}}</nowiki></code>
:* {{Cytuj |url = https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05 |data dostępu = 2022-01-24}}
; zarchiwizowana strona WWW
:z widoczną w URL-u informacją o archiwizacji:
:: <code><nowiki>* {{Cytuj |archiwum = https://web.archive.org/web/20190809220934/https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05}}</nowiki></code>
::* {{Cytuj |archiwum = https://web.archive.org/web/20190809220934/https://wyborcza.pl/7,75400,24963690,dajmy-lasom-posadzic-sie-samym.html |autor = [[w:Adam Wajrak|Adam Wajrak]] |tytuł = Dajmy lasom posadzić się samym |opublikowany = Wyborcza.pl |data = 2019-07-05}}
<!--
:bez danych o archiwizacji w URL-u:
:: <code><nowiki>* {{Cytuj | url = http://wyborcza.pl/1,75475,13748049,Milion_widzow_obejrzalo__Drogowke_.html| autor = *Redakcja Kulturalna | tytuł = Milion widzów obejrzało „Drogówkę” | data = 2013-04-16 | opublikowany = Wyborcza.pl | archiwum = http://archive.is/gupyt |zarchiwizowano= 2013-09-20}}</nowiki></code>
::{{Cytuj | url = http://wyborcza.pl/1,75475,13748049,Milion_widzow_obejrzalo__Drogowke_.html| autor = *Redakcja Kulturalna | tytuł = Milion widzów obejrzało „Drogówkę” | data = 2013-04-16 | opublikowany = Wyborcza.pl | archiwum = http://archive.is/gupyt |zarchiwizowano= 2013-09-20}}
-->
== Szablony ==
Gotowe zestawy do skopiowania i wypełnienia:
* cytowanie książki
*: <code><nowiki>{{Cytuj |autor = |tytuł = |wydanie = |miejsce = |wydawca = |data = |opis = |s = |isbn = }}</nowiki></code>
*: <code><nowiki>{{Cytuj |autor r = |rozdział = |redaktor = |tytuł = |wydanie = |miejsce = |wydawca = |data = |opis = |s = |isbn = }}</nowiki></code>
* cytowanie artykułu z czasopisma
*: <code><nowiki>{{Cytuj |autor = |tytuł = |czasopismo = |odpowiedzialność = |wolumin = |numer = |miejsce = |wydawca = |data = |s = |issn = }}</nowiki></code>
* cytowanie strony internetowej
*: <code><nowiki>{{Cytuj |autor = |url = |tytuł = |praca = |opublikowany = |data = |data dostępu =</nowiki> {{CURRENTYEAR}}-{{CURRENTMONTH}}-{{CURRENTDAY2}}<nowiki>}}</nowiki></code>
Należy pamiętać o usunięciu niewykorzystanych pól.
== Błędy i komunikaty ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
Szablon w wyniku analizy i przetwarzana parametrów dodaje na końcu wyniku kategorie i komunikaty informujące o błędach lub o sposobie działania. Komunikaty są wyświetlane w artykułach w trybie edycji strony, a w większości pozostałych przestrzeni także w trybie wyświetlania.
; <span class="problemy">Brakujące pola: ''nazwy pól''. Nieprawidłowe pola: ''nazw pól''. Nieznane pola: ''nazwy pól''. Przestarzałe pola: ''nazwy pól''. Gołe linki: ''nazwy pól''.</span>
: Standardowe sprawdzanie wartości parametrów z użyciem {{m|Sprawdź|Parametry}}. Należy również pilnować zasady, że nie podaje się pustych pól.
; <span class="problemy">Tylko tytuł.</span>
: Wykrywanie wywołań szablonu tylko z jednym niepustym polem <code>tytuł</code>.
; <span class="problemy">j?</span>
: Podano dwa pola <code>czasopismo</code> i <code>opublikowany</code> o identycznej treści.
; <span class="problemy">!!!</span>
: Analiza pola z listą autorów sygnalizuje problem z ich odróżnianiem stosując przecinek jako separator
; <span class="problemy">dostęp?</span>
: Akceptowane wartości w polu <code>dostęp</code> są zdefiniowane w [[Moduł:Cytuj/dostęp]].
; <span class="problemy"><s>url</s></span>
: Początek adresu w polu <code>url</code> sugeruje, że jest to link, który może być wygenerowany z użyciem jakiegoś pola obsługującego identyfikator publikacji.
; <span class="problemy">Url</span>
: W szablonie znajduje się niepuste pole <code>url</code> lecz jego wartość nie została użyta. Prawdopodobnie pole z tytułem zawiera już inny link.
; <span class="problemy">data?, data dostępu?, zarchiwizowano?</span>
: Nieprawidłowa lub nierozpoznana data. W przypadku stron internetowych lub szablonów pochodnych, na przykład linkujących do zewnętrznych baz danych, może to być również brak dziennej daty dostępu.
: {{ln|Kategoria:Szablon cytuj do sprawdzenia}}
; <span class="problemy">???</span>
: Nie udało się zidentyfikować typu cytowanego źródła. Dobór przekazanych parametrów sugeruje najczęściej cytowanie strony internetowej z książką lub czasopismem.
: {{ln|Kategoria:Szablon cytuj bez określonego trybu}}
; <span class="problemy">p?</span>
: Podano jednocześnie pola <code>opublikowany</code> (parametr stosuje się dla stronn WWW) i <code>wydawca</code> (parametr stosuje się dla książek) . To pierwsze nie jest w takim przypadku wyświetlane.
: {{ln|Kategoria:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca'}}
; <span class="problemy">a?</span>
: Szablony cytujące czasopisma, które mają podany identyfikator <code>pmid</code> mogą zawierać i często zawierają listę autorów w formacie przypominającym zapis na stronach [[w:PMID|PMID]].
: {{ln|Kategoria:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora}}
; <span class="problemy">wiki?</span>
: Istnieje podejrzenie, że cytowane źródło może wskazywać na Wikipedię.
: {{ln|Kategoria:Szablon cytuj wskazuje na Wikipedię}}
; <span class="problemy">1 stycznia</span>
: Daty podane w formacie <code>RRRR-01-01</code> zostały uznane za bardzo częsty błąd generowany przez Citoid, który daty roczne wzbogaca o dzień 1 stycznia. Są one automatycznie zamieniane na <code>RRRR</code>. Jeśli data 1 stycznia RRRR ma być faktycznie umieszczona w szablonie to należy zastosować dowolny alternatywny jej zapis.
: Ta informacja nie dodaje żadnej kategorii
; <span class="problemy">i inni</span>
: W polu z listą autorów znaleziono treść ''i inni'' lub jej synonim. Szablon nie narzuca żadnych ograniczeń na liczbę osób, więc najlepiej zawsze wymieniać wszystkich.
: {{ln|Kategoria:Szablon cytuj nie zawiera wszystkich autorów}}
; <span class="problemy" style="display:inline !important">Brak numerów stron w książce</span>, <span class="problemy" style="display:inline !important">Brak numerów stron w czasopiśmie</span>
: Szablon wykrył cytowanie książki lub czasopisma, a jednocześnie brak pola <code>s = [numery stron]</code> lub <code>odn = <nowiki>[</nowiki>wywołanie [[szablon:odn|odn]]<nowiki>]</nowiki></code>, lub identyfikatora obiektu (<code>doi</code>, <code>pmid</code>, <code>pmc</code>, <code>arxiv</code> lub <code>jstor</code>). Komunikat widoczny jest w trybie edycji artykułu lub w przestrzeniach innych niż przestrzeń główna.
: {{ln|Kategoria:Szablon cytuj – brak strony}}
----
Istnieje też możliwość wskazania, że szablon zmienił nazwę czasopisma z wykorzystaniem modułu [[:Moduł:Cytuj/czasopisma]]. W tym celu należy dopisać w [[Specjalna:Moja strona/common.css|swoim CSS]] następujący kod:
<syntaxhighlight lang="css">
.citation.c:after {
color: [kolor];
font-weight: bold; [linia opcjonalna]
content: " [wyświetlany tekst komunikatu]";
}
</syntaxhighlight>
:Przykład:
<syntaxhighlight lang="css">
.citation.c:after {
color: magenta;
font-weight: bold;
content: " c ?";
}
</syntaxhighlight>
:daje dopisek „ <span style="color: magenta">'''c?'''</span>”.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
Uwaga! Część aliasów zawiera wersję z innych języków i nie powinno się ich używać. Np. aliasy w języku angielskim [[mw:Content translation/Templates#Making_templates_more_easily_translatable|ułatwiają tłumaczenie]] z Angielskiej Wikipedii. Niezależnie od tego zawsze lepiej jest używać form podstawowych, nie aliasów.
<templatedata>
{
"description": "Tego szablonu używamy, kiedy chcemy podać źródło informacji.",
"params": {
"autor": {
"label": "Autor publikacji (imię i nazwisko)",
"aliases": [
"author",
"vauthors",
"authors"
],
"type": "content",
"suggested": true,
"required": false,
"description": "Imię i nazwisko autora lub autorów. Wielu autorów należy oddzielić średnikiem („;”). Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]]). Przy cytowaniu dokumentów urzędowych itp. nazwę instytucji można podać w cudzysłowie: \"Nazwa instytucji\"; wówczas autor zostanie wyświetlony bez modyfikacji. Jeśli cytowany jest patent to autorem jest wnioskujący."
},
"tytuł": {
"label": "Tytuł źródła",
"aliases": [
"title"
],
"type": "content",
"suggested": true,
"required": true,
"description": "Tytuł publikacji, strony internetowej lub nazwa oprogramowania. Można tworzyć odnośniki jak w kodzie źródłowym ([[tytuł]]), jeśli źródło ma artykuł w Wikipedii. Można również podać link zewnętrzny ([url tytuł]), jeśli cytujemy stronę internetową lub treść źródła jest dostępna w Internecie, np. w Google Books. Jeśli podany jest link zewnętrzny należy odpowiednio wypełnić pole „data dostępu”."
},
"czasopismo": {
"label": "Czasopismo",
"aliases": [
"journal",
"newspaper",
"magazine",
"periodical"
],
"type": "content",
"suggested": false,
"required": false,
"description": "Nazwa czasopisma. Można tworzyć odnośniki jak w zwykłym tekście ([[czasopismo]]). Linki wewnętrzne do artykułu o czasopiśmie najlepiej jednak wskazać na stronie [[Moduł:Cytuj/czasopisma]] – wówczas linki wstawiane będą automatycznie. W ww. module można też zdefiniować skrótowe nazwy czasopism. Uwaga: dla stron internetowych (np. stron gazet, portali informacyjnych, blogów itp.) użyj odpowiednio pól „praca” lub „opublikowany”."
},
"data": {
"label": "Data",
"aliases": [
"date",
"year"
],
"type": "string",
"suggested": true,
"required": false,
"description": "Data publikacji. Preferowany format RRRR-MM-DD. Akceptowane są daty niepełne, czyli sam rok lub rok i miesiąc. Dopuszczalne są również niektóre zapisy stosowane w opisie bibliograficznym (przedział lat, rok przypuszczalny, ustalony lub przybliżony, itp.). Brak daty wydania należy podawać jako „b.r.”. Uwaga: szablon automatycznie zmienia datę dzienną na roczną w przypadku dat RRRR-01-01. Jeśli 1 stycznia jest faktyczną datą publikacji, należy zastosować zapis „1 stycznia RRRR” lub „RRRR-1-1” itp."
},
"data dostępu": {
"label": "Data dostępu",
"aliases": [
"access-date"
],
"type": "string",
"suggested": true,
"required": false,
"description": "Data w formacie RRRR-MM-DD, która określa dzień, w którym podane źródło było rzeczywiście przeglądane i w którym informacje podane w artykule rzeczywiście znajdowały się pod podanym odnośnikiem. Data ta dotyczy przede wszystkim stron internetowych i podobnych źródeł, które mogą być aktualizowane lub zmieniane, nie dotyczy zaś książek czy artykułów w czasopismach."
},
"isbn": {
"label": "ISBN",
"type": "string",
"suggested": false,
"required": false,
"description": "Identyfikator ISBN książki. Jeżeli książka ma kilka ISBN, można podać je wszystkie, rozdzielając spacją. Numer można podać bez dywizów, szablon wstawi je automatycznie w odpowiednie miejsca."
},
"issn": {
"label": "ISSN",
"type": "string",
"suggested": false,
"required": false,
"description": "Numer ISSN wydawnictwa ciągłego (czasopisma), dostępny również dla tomów książek wydawanych w wydaniach ciągłych, jak np. roczniki statystyczne, np. 1640-3630. W przypadku podania DOI, numer ISSN jest zbędny."
},
"rozdział": {
"label": "Tytuł rozdziału lub nazwa hasła",
"aliases": [
"chapter"
],
"type": "content",
"suggested": false,
"required": false,
"description": "Pełny tytuł rozdziału lub inaczej wydzielonej części publikacji, nazwa hasła lub artykułu w encyklopedii, słowniku."
},
"redaktor": {
"label": "Redaktor (imię i nazwisko)",
"type": "content",
"suggested": false,
"required": false,
"description": "Imię i nazwisko redaktora. W parametrze można przekazać wielu redaktorów oddzielając kolejnych średnikiem. Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]])."
},
"wydanie": {
"label": "Wydanie",
"aliases": [
"issue"
],
"type": "string",
"suggested": false,
"required": false,
"description": "W przypadku książek należy podać wydanie (edition) cyfrą arabską, jeśli nie była to pierwsza publikacja książki. Pomija się inne informacje dot. wydania (np. „rozszerzone” itp.)."
},
"wolumin": {
"label": "Wolumin lub tom",
"aliases": [
"volume"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Numer woluminu czasopisma lub numer tomu książki."
},
"numer": {
"label": "Numer czasopisma w ramach woluminu",
"aliases": [
"number"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Numer czasopisma w ramach woluminu. "
},
"inni": {
"label": "Inni autorzy",
"type": "string",
"suggested": false,
"required": false,
"description": "Używane przy wymienianiu innych twórców dzieła. Kilku twórców oddzielamy średnikami. Należy na końcu zaznaczyć ich funkcję jako np. (tłum.), (red.), (ilus.). Jeśli cytowany jest patent to w tym polu podawany jest wynalazca."
},
"seria": {
"label": "Seria",
"aliases": [
"series"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Tytuł serii wydawniczej"
},
"opis": {
"label": "Dodatkowy opis",
"type": "string",
"suggested": false,
"required": false,
"description": "Pozwala umieścić dalszy opis źródła, na przykład numer części, nazwę serii."
},
"miejsce": {
"label": "Miejsce wydania",
"aliases": [
"publication-place",
"location",
"place"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Miejsce wydania książki lub czasopisma. Kilka miejsc wydania oddziela się półpauzą (–) bez odstępu."
},
"wydawca": {
"label": "Wydawnictwo",
"aliases": [
"publisher"
],
"type": "content",
"suggested": false,
"required": false,
"description": "Wydawca książki, czasopisma lub portalu internetowego – można tworzyć odnośniki do istniejącego w Wikipedii artykułu o wydawnictwie."
},
"s": {
"label": "Strony, kolumny itp.",
"aliases": [
"page",
"pages"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Wskazuje na pierwszą stronę lub zakres stron, które były źródłem informacji (np. 580 lub 580–594). Szablon automatycznie wstawia skrót s., chyba że wartość nie jest liczbą dziesiętną (wówczas należy podać również ten skrót, np. „s. XV–XVII”, „s. M15–M18”). Nie należy tu podawać całkowitej liczby stron w książce."
},
"odpowiedzialność": {
"label": "Odpowiedzialność",
"type": "string",
"suggested": false,
"required": false,
"description": "Osoba odpowiedzialna prawnie za treść wydawnictwa ciągłego. Redaktor naczelny, ciało zbiorowe itp. W przypadku CD-Action: Zbigniew Bański – redaktor naczelny."
},
"praca": {
"label": "Nazwa źródła internetowego",
"aliases": [
"work"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Jeżeli cytowane jest źródło internetowe (np. artykuł, hasło w encyklopedii internetowej, rekord w bazie danych, artykuł w czasopiśmie internetowym – które podaje się w polu „tytuł” i odnośnik do niego w polu „URL”), podaje się w tym polu nazwę encyklopedii, bazy danych, czasopisma itp. Pole stanowi odpowiednik pola „tytuł” przy wypełnionym polu „rozdział” dla książek i podobnych publikacji. Np. dla rekordu w bazie danych w tym polu podaje się nazwę tej bazy, nazwę rekordu podaje się w polu „tytuł”, odnośnik do rekordu w polu „URL”, a instytucję odpowiedzialną za bazę danych w polu „Nazwa serwisu lub instytucji odpowiedzialnej”."
},
"opublikowany": {
"label": "Nazwa serwisu lub instytucji odpowiedzialnej",
"aliases": [
"website"
],
"type": "string",
"suggested": true,
"required": false,
"description": "Nazwa serwisu lub portalu internetowego bądź nazwa instytucji, która prowadzi dany serwis lub portal (nie jest to miejsce na wpisywanie skróconej wersji adresu strony), np. dla strony „www.stat.gov.pl” można podać „Główny Urząd Statystyczny”, dla „www.sejm.gov.pl” – „Sejm Rzeczypospolitej Polskiej”, a dla „www.gazeta.pl” – „Gazeta.pl”."
},
"autor r": {
"label": "Autor rozdziału (imię i nazwisko)",
"type": "string",
"suggested": false,
"required": false,
"description": "Imię i nazwisko autora rozdziału, który został podany w polu „tytuł rozdziału”. W parametrze można przekazać wielu autorów oddzielając kolejnych średnikiem. Można tworzyć odnośniki jak w kodzie źródłowym ([[Imię nazwisko]]), jeśli autor ma artykuł w Wikipedii."
},
"typ nośnika": {
"label": "Typ nośnika",
"type": "string",
"suggested": false,
"required": false,
"description": "Rodzaj nośnika publikacji w formie elektronicznej."
},
"patent": {
"label": "Numer patentu",
"type": "string",
"suggested": false,
"required": false,
"description": "Kod urzędu patentowego (zwykle dwuliterowy kod kraju) i numer patentu. Wnioskującego o patent należy podać w polu „autor”, a o wynalazcy można wspomnieć w polu „inni”."
},
"doi": {
"label": "DOI",
"type": "string",
"suggested": false,
"required": false,
"description": "Digital object identifier, np. 10.1016/j.coi.2004.08.001."
},
"lccn": {
"label": "LCCN",
"type": "string",
"suggested": false,
"required": false,
"description": "Identyfikator LCCN książki w Bibliotece Kongresu Stanów Zjednoczonych."
},
"pmid": {
"label": "PMID",
"type": "string",
"suggested": false,
"required": false,
"description": "Identyfikator bazy PubMed."
},
"pmc": {
"label": "PMC",
"type": "string",
"suggested": false,
"required": false,
"description": "Identyfikator PMC."
},
"bibcode": {
"label": "Bibcode",
"type": "string",
"suggested": false,
"required": false,
"description": "Identyfikator Bibcode."
},
"oclc": {
"label": "OCLC",
"type": "string",
"suggested": false,
"required": false,
"description": "Numer identyfikacyjny w Online Computer Library Center, np. 3185581."
},
"arxiv": {
"label": "Identyfikator arXiv",
"type": "string",
"suggested": false,
"required": false,
"description": "Numer identyfikacyjny w elektronicznym archiwum naukowych preprintów."
},
"jstor": {
"label": "Identyfikator JSTOR",
"type": "string",
"suggested": false,
"required": false,
"description": "Numer identyfikacyjny w cyfrowej bibliotece JSTOR."
},
"ol": {
"label": "Identyfikator Open Library",
"type": "string",
"suggested": false,
"required": false,
"description": "Numer identyfikacyjny w cyfrowej bibliotece Open Library (bez prefiksu OL)."
},
"id": {
"label": "Identyfikator niestandardowy",
"type": "string",
"suggested": false,
"required": false,
"description": "Niestandardowy identyfikator czasopisma. Pamiętaj o podaniu typu identyfikatora, nie tylko samego numeru."
},
"url": {
"label": "URL",
"type": "url",
"required": false,
"description": "Adres URL strony."
},
"archiwum": {
"label": "Archiwum",
"aliases": [
"archive-url"
],
"type": "url",
"suggested": false,
"required": false,
"description": "Adres URL archiwum strony."
},
"zarchiwizowano": {
"label": "Data archiwizacji",
"aliases": [
"archive-date"
],
"type": "string",
"suggested": false,
"required": false,
"description": "Data zarchiwizowania strony."
},
"cytat": {
"label": "Cytat",
"aliases": [
"quote"
],
"type": "content",
"suggested": false,
"required": false,
"description": "Cytat – może zawierać tag <br /> czy inną wikizację. Cytat pokaże się po tekście „Cytat: ”. Przy długich cytatach, wskazane jest zakończenie cytatu właśnie <br />, dla klarowności prezentacji całości. Szablon nie doda cudzysłowu lub kursywy. Redakcja szaty graficznej czy interpunkcji cytatu leży w gestii użytkownika i stanowi część wartości parametru."
},
"język": {
"label": "Język",
"aliases": [
"language"
],
"type": "string",
"suggested": true,
"required": false,
"description": "Język publikacji – parametr korzysta z kodów języków szablonu {{lang}}, np. „pl”, „en”, „de”. Jeśli publikacja jest wielojęzyczna to można przekazać więcej kodów oddzielając je znakami odstępu, np. „en pl”."
},
"dostęp": {
"label": "Rodzaj dostępu",
"type": "string",
"suggested": false,
"required": false,
"description": "Rodzaj dostępu do dokumentu „otwarty” (lub „o”), „zamknięty” („z”), „rejestracja” („r”; gdy publikacja dostępna jest po bezpłatnej rejestracji), „częściowy” („c”; dostępna wersja próbna, limit wyświetleń w ciągu dnia itp.). Podanie parametru skutkuje wyświetleniem odpowiedniej ikonki dostępu przed danym przypisem. W niektórych przypadkach ikonka jest generowana automatycznie – ma to miejsce gdy w szablonie wypełniony jest parametr „pmc” (pojawia się ikonka otwartego dostępu) lub gdy rodzaj dostępu jest zdefiniowany na stronie [[Moduł:Cytuj/dostęp]]."
},
"odn": {
"label": "Odnośnik",
"type": "string",
"description": "Wartość „tak” dodaje odnośnik i umożliwia stosowanie przypisów za pomocą szablonu {{odn|nazwisko|rok}}. W przypadku nietypowych autorów itp., w parametrze odn można stosować szablon {{odn/id|unikatowa-nazwa|rok}}, który wygeneruje specjalną nazwę odnośnika, do której można się odnieść w {{odn}}.",
"autovalue": "tak"
},
"kropka": {
"label": "Dodatkowy opis",
"type": "string",
"description": "Dodatkowa treść umieszczana na samym końcu przypisu."
},
"url-status": {
"label": "Status URL",
"description": "Umożliwia ukrycie niebezpiecznych linków. Ukrywa standardowy url pozostawiając ten wpisany w archiwum (jeśli dostępny).",
"type": "string",
"suggestedvalues": [
"ukryj",
"std"
],
"default": "std"
}
},
"maps": {
"citoid": {
"edition": "wydanie",
"url": "url",
"nameOfAct": "tytuł",
"caseName": "tytuł",
"title": "tytuł",
"subject": "tytuł",
"publisher": "wydawca",
"company": "wydawca",
"publicationTitle": "czasopismo",
"websiteTitle": "opublikowany",
"blogTitle": "opublikowany",
"forumTitle": "opublikowany",
"proceedingsTitle": "opublikowany",
"dictionaryTitle": "opublikowany",
"encyclopediaTitle": "opublikowany",
"seriesTitle": "opublikowany",
"date": "data",
"issueDate": "data",
"dateEnacted": "data",
"dateDecided": "data",
"accessDate": "data dostępu",
"location": "miejsce",
"place": "miejsce",
"ISSN": [
"issn"
],
"ISBN": [
"isbn"
],
"PMCID": "pmc",
"PMID": "pmid",
"oclc": "oclc",
"pages": "s",
"firstPage": "s",
"codePages": "s",
"reporterVolume": "wolumin",
"codeVolume": "wolumin",
"volume": "wolumin",
"series": "opis",
"issue": "numer",
"patentNumber": "numer",
"episodeNumber": "numer",
"billNumber": "numer",
"documentNumber": "numer",
"publicLawNumber": "numer",
"docketNumber": "numer",
"DOI": "doi",
"language": "język",
"author": "autor",
"contributor": "autor",
"artist": "autor",
"cartographer": "autor",
"presenter": "autor",
"interviewee": "autor",
"inventor": "autor",
"programmer": "autor",
"editor": "redaktor",
"archiveUrl": "archiwum",
"archiveDate": "zarchiwizowano"
}
},
"paramOrder": [
"autor",
"autor r",
"redaktor",
"rozdział",
"tytuł",
"czasopismo",
"data",
"data dostępu",
"isbn",
"issn",
"wydanie",
"wolumin",
"numer",
"inni",
"opis",
"miejsce",
"wydawca",
"s",
"odpowiedzialność",
"praca",
"opublikowany",
"seria",
"typ nośnika",
"patent",
"doi",
"lccn",
"pmid",
"pmc",
"bibcode",
"oclc",
"arxiv",
"jstor",
"ol",
"id",
"url",
"url-status",
"archiwum",
"zarchiwizowano",
"cytat",
"język",
"dostęp",
"odn",
"kropka"
],
"format": "{{_ |_ = _}}"
}
</templatedata>
== Dostosowywanie ==
Ostateczny wynik działania szablonu zawiera niektóre fragmenty opakowane w znaczniki <kbd><nowiki><span></nowiki></kbd>. W zależności od zawartości mają one przypisany atrybut klasy, który może być wykorzystany w [[w:Kaskadowe arkusze stylów|CSS]] do dostosowania wyglądu według własnych upodobań. Lista dostępnych klas jest następująca:
{| class=wikitable
|-
! nazwa klasy
! zawartość znacznika
! uwagi
|-
| <kbd>.cite-lastname</kbd>
| nazwisko autora
|
|-
| <kbd>.cite-name-before</kbd>
| imię lub imiona autora umieszczone przed nazwiskiem
| widoczne w przypisach, a ukryte w treści głównej i bibliografii
|-
| <kbd>.cite-name-after</kbd>
| imię lub imiona autora umieszczone po nazwisku
| ukryte w przypisach, a widoczne w treści głównej i bibliografii
|-
| <kbd>.cite-name-full</kbd>
| imię lub imiona autora
|
|-
| <kbd>.cite-name-initials</kbd>
| inicjały imienia
| ukryte
|-
| <kbd>.cite-at-al</kbd>
| jeśli autorów jest więcej niż trzech to drugi i kolejni autorzy są zamienieni na opis ''i inni'', ich pełna lista jest umieszczona w dymku z podpowiedzią
|
|-
|}
== Kategorie techniczne generowane przez szablon ==
* [[:Kategoria:Szablon cytuj w trybie 'cytuj książkę' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj książkę' bez obowiązkowych parametrów}})
* [[:Kategoria:Szablon cytuj w trybie 'cytuj pismo' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj pismo' bez obowiązkowych parametrów}})
* [[:Kategoria:Szablon cytuj w trybie 'cytuj stronę' bez obowiązkowych parametrów]] ({{PAGESINCAT:Szablon cytuj w trybie 'cytuj stronę' bez obowiązkowych parametrów}})
* [[:Kategoria:Szablon cytuj bez określonego trybu]] ({{PAGESINCAT:Szablon cytuj bez określonego trybu}})
* [[:Kategoria:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca']] ({{PAGESINCAT:Szablon cytuj zawiera pola 'opublikowany' i 'wydawca'}})
* [[:Kategoria:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora]] ({{PAGESINCAT:Szablon cytuj zastosował alternatywną metodę analizy pola z opisem autora}})
* [[:Kategoria:Szablon cytuj zamienił nazwę czasopisma]] ({{PAGESINCAT:Szablon cytuj zamienił nazwę czasopisma}})
* [[:Kategoria:Szablon cytuj wskazuje na Wikipedię]] ({{PAGESINCAT:Szablon cytuj wskazuje na Wikipedię}})
* [[:Kategoria:Szablon cytuj nie zawiera wszystkich autorów]] ({{PAGESINCAT:Szablon cytuj nie zawiera wszystkich autorów}})
* [[:Kategoria:Szablon cytuj używa pól opisowych]] ({{PAGESINCAT:Szablon cytuj używa pól opisowych}})
* [[:Kategoria:Szablon cytuj – brak strony]] ({{PAGESINCAT:Uniwersalny szablon cytuj – brak strony}})
== Zobacz też ==
* [[w:Wikipedia:Bibliografia|Wikipedia:Bibliografia]]
* [[:Kategoria:Szablony informujące o problemach z uźródłowieniem]]
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony cytowania}}
</includeonly>
4rmbmu1fm1ecxrnnkphgi3wz55lzltz
Wikibooks:Administratorzy interfejsu
4
32857
556426
518952
2026-09-15T01:10:20Z
Persino
2851
556426
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}} które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na {{Code|atrybuty=|dir="ltr"|.css}} lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''Administrator interfejsu'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
* {{lr|Administratorzy}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
idjotfb24b5ftgrjubmne6mrc1gee4i
556427
556426
2026-09-15T01:12:15Z
Persino
2851
556427
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na {{Code|atrybuty=|dir="ltr"|.css}} lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
* {{lr|Administratorzy}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
qur0vfisf2t242hc8rb76f9wasjllkd
556429
556427
2026-09-15T01:19:07Z
Persino
2851
556429
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|MediaWiki:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
* {{lr|Administratorzy}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
pp9ml5uucgd0o57jybiluzmxtt1jvii
556430
556429
2026-09-15T01:19:40Z
Persino
2851
556430
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}}, z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
* {{lr|Administratorzy}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
g31z21ifb4z13dpkjwhl9hhezblguck
556434
556430
2026-09-15T01:32:38Z
Persino
2851
556434
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
* {{lr|Administratorzy}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
a7apqsgk1npbyfqpdn0lt5dnk4bxz4x
556437
556434
2026-09-15T01:37:22Z
Persino
2851
/* Zobacz też */
556437
wikitext
text/x-wiki
<noinclude><!--
-->{{UnikatowaStronaStart
| nagłówek = {{Podrozdział|Pomoc|Administratorzy interfejsu}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
'''Administratorzy interfejsu''' to autorzy lub bibliotekarze, należących do grupy użytkowników: {{Code|atrybuty=|dir="ltr"|{{lmc|MyLanguage/Interface administrators|interface-admin}}}} (Zobacz też: {{lc2|Grupy użytkowników}}), z ''prawami administratora interfejsu'' (ang. ''interface admin''), mogą edytować ustawienia interfejsu edytując strony CSS/JS (Są to takie strony jak: {{lm2|Common.css}} i {{lm2|Vector.js}}, czy {{lm2|Vector-2022.css}}, które zawierają kod wykonywany w przeglądarce odwiedzającego stronę użytkownika) i strony z CSS i JS (czyli wszystkie strony o nazwach kończących się na: {{Code|atrybuty=|dir="ltr"|.css}}, lub {{Code|atrybuty=|dir="ltr"|.js}}, zarówno w przestrzeni nazw: {{Code|atrybuty=|dir="ltr"|{{Np|MediaWiki|link=tak}}:}}, jak i na podstronach innych użytkowników).
== Lista administratorów interfejsu polskich Wikibooks ==
Administratorzy interfejsu są wyróżnieni słowami ''{{lmc|MyLanguage/Interface administrators|Administrator interfejsu}}'' na {{lc|Użytkownicy/interface-admin|liście użytkowników}}.
# {{lż|Wargo}}
== Zobacz też ==
{{Wikibooks:Administratorzy/Zobacz też}}
{{BrClear}}
<noinclude>
{{UnikatowaStronaKoniec}}
{{Kategorie
| 1 = Pomoc - Strony projektu
| 2 = Uprawnienia administracyjne
| 3 = Metastrony Wikibooks
}}
</noinclude>
a74mozo4srdvpw0zpvnw1bsd84r9cob
Szablon:Tabela nawigacyjna
10
32860
556472
553233
2026-09-15T03:47:42Z
Persino
2851
556472
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />
{| {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{styl|}}}|style="{{{styl}}}"}} <!--
--> class="tabela_nawigacyjna {{#switch:{{{funkcja|UkrytaWikitabelowaListaMenu}}}
| UkrytaWikitabelowaListaMenu = wikitable collapsible collapsed
| PokazanaWikitabelowaListaMenu = wikitable collapsible
| StatycznaWikitabelowaListaMenu = wikitable
| UkrytaNiewikitabelowaListaMenu = collapsible collapsed
| PokazanaNiewikitabelowaListaMenu = collapsible
| StatycznaNiewikitabelowaListaMenu =
| AutomatycznaUkrytaWikitabelowaListaMenu = wikitable collapsible autocollapse
| AutomatycznaUkrytaNiewikitabelowaListaMenu = collapsible autocollapse
| WewnętrznaUkrytaWikitabelowaListaMenu = wikitable collapsible innercollapse
| WewnętrznaUkrytaNiewikitabelowaListaMenu = collapsible innercollapse
| #default = wikitable
}} {{{klasa|}}}" {{{opcje|}}}
|-
! {{#if:{{{styl tytułu|}}}|style="{{{styl tytułu}}}"}} | {{Div|klasa=tabela_nawigacyjna-tytuł|{{{tytuł}}}}}
|-
| {{#if:{{{styl spisu|}}}|style="{{{styl spisu}}}"}} |
{{{spis}}}
|}<!--
-->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry
| = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}}
| funkcja = ^UkrytaWikitabelowaListaMenu${{!}}^PokazanaWikitabelowaListaMenu${{!}}^StatycznaWikitabelowaListaMenu${{!}}^UkrytaNiewikitabelowaListaMenu${{!}}^PokazanaNiewikitabelowaListaMenu${{!}}^StatycznaNiewikitabelowaListaMenu${{!}}^AutomatycznaUkrytaWikitabelowaListaMenu${{!}}^AutomatycznaUkrytaNiewikitabelowaListaMenu${{!}}^WewnętrznaUkrytaWikitabelowaListaMenu${{!}}^WewnętrznaUkrytaNiewikitabelowaListaMenu$
| id =
| styl =
| styl tytułu =
| styl spisu =
| klasa =
| opcje =
| tytuł = txt!
| spis = txt!
}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
2845v77r8qjgsn2k5v4xi1mrhc8pbu3
556533
556472
2026-09-15T09:25:51Z
Persino
2851
556533
wikitext
text/x-wiki
<includeonly><templatestyles src="Szablon:Tabela nawigacyjna/styles.css" />
{| {{#if:{{{id|}}}|id="{{{id}}}"}} {{#if:{{{styl|}}}|style="{{{styl}}}"}} <!--
--> class="tabela_nawigacyjna {{#switch:{{{funkcja|UkrytaWikitabelowaListaMenu}}}
| UkrytaWikitabelowaListaMenu = wikitable collapsible collapsed
| PokazanaWikitabelowaListaMenu = wikitable collapsible
| StatycznaWikitabelowaListaMenu = wikitable
| UkrytaNiewikitabelowaListaMenu = collapsible collapsed
| PokazanaNiewikitabelowaListaMenu = collapsible
| StatycznaNiewikitabelowaListaMenu =
| AutomatycznaUkrytaWikitabelowaListaMenu = wikitable collapsible autocollapse
| AutomatycznaUkrytaNiewikitabelowaListaMenu = collapsible autocollapse
| WewnętrznaUkrytaWikitabelowaListaMenu = wikitable collapsible innercollapse
| WewnętrznaUkrytaNiewikitabelowaListaMenu = collapsible innercollapse
| #default = wikitable
}} {{{klasa|}}}" {{{opcje|}}}
|-
! {{#if:{{{styl nagłówka|}}}|style="{{{styl nagłówka}}}"}} {{#if:{{{klasa nagłówka|}}}|class="{{{klasa nagłówka}}}"}} | {{Div|klasa=tabela_nawigacyjna-tytuł {{{klasa tytułu|}}}|styl={{{styl tytułu|}}}|{{{tytuł}}}}}
|-
| {{#if:{{{styl komórki|}}}|style="{{{styl komórki}}}"}} {{#if:{{{klasa komórki|}}}|class="{{{klasa komórki}}}"}} | <!--
-->{{Div|klasa={{{klasa spisu|}}}|styl={{{styl spisu|}}}|
{{{spis}}}}}
|}<!--
-->{{#if:{{{bez dodatkowych sprawdzeń|}}}||{{#invoke:Sprawdź|Parametry
| = problemy-w-szablonie-%s {{((}}Kategoria{{!}}Szablon %s do sprawdzenia{{))}}
| funkcja = ^UkrytaWikitabelowaListaMenu${{!}}^PokazanaWikitabelowaListaMenu${{!}}^StatycznaWikitabelowaListaMenu${{!}}^UkrytaNiewikitabelowaListaMenu${{!}}^PokazanaNiewikitabelowaListaMenu${{!}}^StatycznaNiewikitabelowaListaMenu${{!}}^AutomatycznaUkrytaWikitabelowaListaMenu${{!}}^AutomatycznaUkrytaNiewikitabelowaListaMenu${{!}}^WewnętrznaUkrytaWikitabelowaListaMenu${{!}}^WewnętrznaUkrytaNiewikitabelowaListaMenu$
| id =
| styl =
| styl nagłówka =
| styl tytułu =
| klasa nagłówka =
| klasa tytułu =
| styl komórki =
| styl spisu =
| klasa komórki =
| klasa spisu =
| klasa =
| opcje =
| tytuł = txt!
| spis = txt!
}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
9dxcobqrkpayw5x4dx43ye12zdzpjlc
MediaWiki:Scribunto-doc-page-show
8
33746
556383
553853
2026-09-14T20:38:32Z
Persino
2851
556383
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykłady|$1}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
tom350tmxi8tjyyxleg6rjjl5gbm3f4
556386
556383
2026-09-14T20:41:13Z
Persino
2851
556386
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{Dokumentacja|$1}}
{{#switch:<!--
-->{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
}}
| Brudnopis = {{Kategoria|Moduły, z opisami, brudnopisu}}
| Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykład|$1}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| #default = {{Kategoria|Moduły z opisami}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów z opisem, by wyświetlić jego jawny istniejący opis o adresie: Module:$1/opis, na stronie danego modułu. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-header}} i {{s|int:Scribunto-doc-page-does-not-exist}}.}}
}}
461ai3fm1h4xay3e0d8twfyd2odojod
MediaWiki:Scribunto-doc-page-does-not-exist
8
33747
556384
553854
2026-09-14T20:39:11Z
Persino
2851
556384
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykłady|$1}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
o8k62qpqlr5ku8ycmftcgu84saqhqsu
556387
556384
2026-09-14T20:41:29Z
Persino
2851
556387
wikitext
text/x-wiki
{{#switch:{{NAMESPACE}}
| {{Ns:Module}} = {{#if:{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}
|{{Ombox|typ=wiadomość|grafika={{Ikona|stop}}|tekst=To jest moduł przekierowujący, który wskazuje na {{lo|{{#invoke:Łatki|contentMatch|^%s*return%s+require%s*%(%s*"(.-)"%s*%)}}}}.}}
}}<!--
-->{{#switch:{{#invoke:Parametry|Or
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Mapa/dane)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(ISBN)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład)/}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Brudnopis)/}}
|{{PAGENAME}}
}}
| Mapa/dane = {{Dokumentacja
| zawartość = {{Ombox|tekst = Ten moduł jest szablonem z danymi do '''{{lpw2|Szablony lokalizacyjne}}'''.{{Br}}Opis pochodzi z {{m|Mapa/doc}}.}}<!--
--><templatestyles src="Moduł:Infobox/styles.css" />{{#invoke:Mapa/doc|opis}}
}}{{Kategoria|Szablony lokalizacyjne - podmoduły modułu Mapa}}
| ISBN = {{#if:{{Dopasuj|ciąg={{SUBPAGENAME}}|wzór=^{{!(}}0-9{{)!}}+X?$}}
|{{Dokumentacja |zawartość = {{Ombox|tekst = Ten moduł jest szablonem deklarującym formalnie błędny numer [{{lpg|International Standard Book Number|ISBN}}.}}{{#invoke:ISBN|opis}}}}{{Kategoria|Błędny numer ISBN}}
|{{Dokumentacja}}{{Kategoria|ISBN}}
}}
| Wikibooks/Przykład = {{MediaWiki:Scribunto-doc-page-przykład|$1}}<!--
-->{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu<!--
-->{{Jeśli niepuste
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}
|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład(%/.+)%/[^%/]+}}
}}<!--
-->}}
| Brudnopis = ''Dokumentacja dla tego modułu może zostać utworzona pod nazwą [[:$1]]''.{{Kategoria|Moduły, bez opisów, brudnopisu}}
| #default = {{Dokumentacja}}{{Kategoria|Moduły bez opisów}}
}}
| #default = {{Dokumentacja|zawartość=To jest strona komunikatu dla modułów bez opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-header}}.}}
}}
86zc706xktkzfqiac9qgkhgdfyqe12z
Szablon:Jeśli niepuste komunikat
10
41796
556417
354666
2026-09-14T23:25:21Z
Persino
2851
556417
wikitext
text/x-wiki
<includeonly>{{#if:{{{1|}}}|{{{wtedy|'''Szablon {{s|{{{2|}}}}} zgłosił następujące błędy:'''}}}{{#if:{{{dodatkowe|}}}||{{{1|}}}}}|{{{przeciwnie|{{{3|}}}}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
e5qd1wl2julmae880vddhhj2enn716z
Szablon:Jeśli niepuste komunikat/opis
10
42315
556415
421828
2026-09-14T23:16:17Z
Persino
2851
/* Użycie */
556415
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
;Parametry
*{{Code|1}} - lista błędów komunikatu,
*{{Code|wtedy}} - część komunikatu,
*{{Code|2}} - nazwa szablonu,
*{{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu,
== Przykład ==
;Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
;Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
;Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
;Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
ioces4ibc6d0pto88elauykewja0nsy
556416
556415
2026-09-14T23:21:19Z
Persino
2851
/* Opis parametrów */
556416
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
;Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
;Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
;Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
;Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
tt73pltnd7i5mraftu0nxjmw8ygm96i
556418
556416
2026-09-14T23:27:47Z
Persino
2851
/* Opis parametrów */
556418
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}}, przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
;Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
;Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
;Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
;Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
d2nnmas9hff4rda9g0w5byp2fsw95mm
556420
556418
2026-09-14T23:32:11Z
Persino
2851
/* Użycie */
556420
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
;Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
;Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
;Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
;Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
8p34usgckq6561ehezw0ae87bxv803c
556421
556420
2026-09-14T23:33:16Z
Persino
2851
/* Opis parametrów */
556421
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
;Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
;Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
;Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
;Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
;Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
jq4et1vy38b1mz9v8aze2pjazxeg9ep
556423
556421
2026-09-15T00:47:18Z
Persino
2851
/* Przykład */
556423
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
; Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
; Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
; Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład piąty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
----
; Przykład piąty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
----
; Przykład szósty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
fr3mqc1ktay4yhi3cumly10wol21azv
556424
556423
2026-09-15T00:48:51Z
Persino
2851
/* Przykład */
556424
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
; Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
; Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
; Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład piąty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
----
; Przykład piąty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
----
; Przykład szósty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
njgti6nt8gxhul8wq4gjsmvwzjdv4ze
556425
556424
2026-09-15T00:50:22Z
Persino
2851
/* Przykład */
556425
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Użycie ==
Dwa układy używania tego szablonu są według punktu:
* Szablon używamy do wyświetlania pewnego komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr.
* Też w innym przypadku zależności od pierwszego parametru niepustego: {{Parametr|1|coś}}, wyświetla się coś według parametru: {{Parametr|wtedy|coś}} (wraz z parametrem: {{Parametr|1|coś}}, chyba, że podano zmienną: {{Parametr|dodatkowe|tak}}), przeciwnie szablon idzie do zmiennej: {{Parametr|przeciwnie|coś}}.
== Opis parametrów ==
; Parametry
* {{Code|1}} - lista błędów komunikatu - sugerowany,
* {{Code|wtedy}} - używana, gdy jest taki komunikat, wtedy gdy pierwszy argument jest niepusty - sugerowany,
* {{Code|dodatkowe}} - używana wraz z parametrem: {{Code|wtedy}}, wtedy dodatkowa informacja po nim nie jest wyświetlana od wartości pierwszego argumentu - opcjonalny,
* {{Code|2}} - nazwa szablonu - opcjonalny,
* {{Code|3}} lub {{Code|przeciwnie}} - wyświetlana, gdy nie ma komunikatu, czyli pierwszy parametr nie jest niepusty - sugerowany.
== Przykład ==
; Przykład pierwszy
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|NPA|Tekst szablonu.}}}}
----
; Przykład drugi
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||NPA|Tekst szablonu.}}}}
----
; Przykład trzeci
{{Pre|{{s|ambox|typ{{=}}poważny|tekst{{=}}{{s|Jeśli niepuste komunikat|<nowiki><ul><li>Oto jest błąd.</li></ul></nowiki>|wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=poważny|tekst={{Jeśli niepuste komunikat|<ul><li>Oto jest błąd.</li></ul>|wtedy='''Szablon zgłosił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład czwarty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||wtedy{{=}}<nowiki>'''</nowiki>Szablon zgłosił następujące błędy:<nowiki>'''</nowiki>|przeciwnie{{=}}Tekst szablonu.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||wtedy='''Szablon zgłośił następujące błędy:'''|przeciwnie=Tekst szablonu.}}}}
----
; Przykład piąty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat|Wartość sprawdzana|dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
----
; Przykład szósty
{{Pre|{{s|ambox|typ{{=}}zawartość|tekst{{=}}{{s|Jeśli niepuste komunikat||dodatkowe{{=}}tak|wtedy{{=}}Komunikat wtedy.|przeciwnie{{=}}Komunikat przeciwnie.}}}}}}
; Wynik
{{ambox|typ=zawartość|tekst={{Jeśli niepuste komunikat||dodatkowe=tak|wtedy=Komunikat wtedy.|przeciwnie=Komunikat przeciwnie.}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
"1": {
"description": "Lista błędów komunikatu.",
"type": "string",
"required": true
},
"2": {
"description": "Nazwa szablonu.",
"type": "string",
"suggested": true
},
"3": {
"aliases": [
"przeciwnie"
],
"description": "Wyświetlana, gdy nie ma komunikatu.",
"type": "wiki-page-name",
"suggested": true
},
"wtedy": {
"description": "Część komunikatu.",
"type": "string"
}
},
"paramOrder": [
"1",
"wtedy",
"2",
"3"
],
"description": "Szablon używamy do wyświetlania komunikatu, jeśli jest niepusty pierwszy parametr tego szablonu, w przeciwnym przypadku wyświetla trzeci parametr. "
}
</templatedata>
== Zobacz też ==
* {{s|Jeśli niepuste}} - szablon zwraca pierwszy parametr, jeśli on nie jest pusty, w przeciwnym przypadku drugi,
* {{s|Jeśli równe}} - szablon warunkowy porównujący dwa parametry ewentualnie w dwóch różnych jednostkach długości, sprawdzam, czy są równe.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony warunkowe}}
</includeonly>
kq3ql5a75tlaa3c9fxrcq5fqsrksdpn
Moduł:Ramka
828
44224
556516
553323
2026-09-15T07:47:15Z
Persino
2851
556516
Scribunto
text/plain
local p={};
local function ParserBlokowy(frame, co_ma_wywolac)
local pf=frame:getParent();
local nazwa_szablonu_modulu_lub_parsera="Nazwa";
local szablon_modul_lub_parser=frame.args[nazwa_szablonu_modulu_lub_parsera];
local argumenty_szablonu_modulu_lub_parsera={};
local tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica={};
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local bez_parametrowa_tablica=ramka_dane_modul.bez_parametrowa_tablica;
local bez_parametrow={};
if(co_ma_wywolac==1)then bez_parametrow["Funkcja"]=true;end;
local parametry_modul=require("Module:Parametry");
local tab_usun_parametry;
local czy_usun=frame.args["usuń z parametrów ramki"];
if(parametry_modul.CzyTak(czy_usun))then
tab_usun_parametry={};
local iter=mw.text.gsplit(czy_usun,";",true);
for name in iter do
name=mw.ustring.gsub(name,"^[%s_]*","");
name=mw.ustring.gsub(name,"[%s_]*$","");
name=tonumber(name) or name;
tab_usun_parametry[name]=true;
end;
end;
for nazwa_parametru,wartosc_parametru in pairs(frame.args) do
if(((not tab_usun_parametry)or(not tab_usun_parametry[nazwa_parametru]))
and((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))
)then
tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru]=nazwa_parametru;
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
local szablonowe_modul=require("Module:Szablonowe");
local tabela_bez_argumentow=p.RozpakujArgumenty(frame.args["bez argumentów rodzica"]);
local zmienna_z_parametrami_rodzica=frame.args["zmienna z parametrami rodzica"];
local czy_przekazac_parametry_rodzica=zmienna_z_parametrami_rodzica and parametry_modul.CzyTak(zmienna_z_parametrami_rodzica) or false;
----
local frame_sprawdzenia_args=frame.args["bez dodatkowych sprawdzeń"];
local bez_dodatkowych_sprawdzen;
local czy_podano_bez_dodatkowych_sprawdzen;
if(frame_sprawdzenia_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_args);
else
local frame_sprawdzenia_pf_args=pf.args["bez dodatkowych sprawdzeń"];
if(frame_sprawdzenia_pf_args)then
czy_podano_bez_dodatkowych_sprawdzen=frame_sprawdzenia_pf_args and true or false;
bez_dodatkowych_sprawdzen=parametry_modul.CzyTak(frame_sprawdzenia_pf_args);
end;
end;
local z_dodatkowymi_sprawdzeniami=not(bez_dodatkowych_sprawdzen);
---
local PakujArgumentyRamki = function(args)
local czy_tylko_ze_zmienna_bez_argumentow_szablonu=args["zmienna z argumentami ramki"];
if(not parametry_modul.CzyTak(czy_tylko_ze_zmienna_bez_argumentow_szablonu))then return args["bez argumentów szablonu"];end;
local tabelka1={};
for nazwa_parametru,_ in pairs(args)do
if((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))then
tabelka1[nazwa_parametru]=true;
end;
end;
local tabelka2=(args["bez argumentów szablonu"]) and p.RozpakujArgumenty(args["bez argumentów szablonu"]);
local tabelka=parametry_modul["ŁączDwieTabele"](tabelka1,tabelka2);
local tablica_mikroszablonow={
[";"]="{{+}}",
};
local str="";
for name,_ in pairs(tabelka) do
str=str..((str~="")and ";" or "")..mw.ustring.gsub(mw.text.trim(name),".",tablica_mikroszablonow);
end;
return str,tabelka2;
end;
local nazwa_szablonu;
local function TempFunc()
if(not nazwa_szablonu)then
local nazwa=szablonowe_modul.NazwaSzablonu(pf:getTitle());
nazwa_szablonu=nazwa;
return nazwa;
else
return nazwa;
end;
end;
local bez_argumentow_szablonu=nil;
if(czy_przekazac_parametry_rodzica)then
if(z_dodatkowymi_sprawdzeniami)then
local str=p.PakujParametry(pf.args);
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=str;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc();
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc();
else
local function ZmiennaZNazwaSzablonuRodzica()
local czy_ze_nazwa_szablonu=frame.args["zmienna z nazwą szablonu rodzica"];
if(parametry_modul.CzyTak(czy_ze_nazwa_szablonu))then
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or szablonowe_modul.NazwaSzablonu(pf:getTitle());
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc();
end;
local z_argumentami_najwyzszego_rodzica=not parametry_modul.CzyTak(tabela_bez_argumentow["nie potomek"]);
if(z_argumentami_najwyzszego_rodzica)then
local potomek=parametry_modul.CzyTak(pf.args["potomek"]);
if(potomek)then
local parametry_rodzic=pf.args["parametry rodzica"];
if(parametry_rodzic)then
if(z_dodatkowymi_sprawdzeniami)then
argumenty_szablonu_modulu_lub_parsera["parametry rodzica"]=parametry_rodzic;
end;
argumenty_szablonu_modulu_lub_parsera["potomek"]="tak";
argumenty_szablonu_modulu_lub_parsera["bez argumentów szablonu"],bez_argumentow_szablonu=PakujArgumentyRamki(frame.args);
if(czy_podano_bez_dodatkowych_sprawdzen)then
argumenty_szablonu_modulu_lub_parsera["bez dodatkowych sprawdzeń"]=bez_dodatkowych_sprawdzen and "tak" or "";
end;
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu przodka"]=pf.args["nazwa szablonu przodka"] or TempFunc();
argumenty_szablonu_modulu_lub_parsera["nazwa szablonu rodzica"]=pf.args["nazwa szablonu rodzica"] or TempFunc();
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica();
end;
else
ZmiennaZNazwaSzablonuRodzica()
end;
end;
local czy_bez_argumentow_nienazwanych_rodzica=parametry_modul.CzyTak(frame.args["bez argumentów nienazwanych rodzica"]);
local czy_parametry_pudelka=parametry_modul.CzyTak(frame.args["parametry funkcji modułu pudełek"]);
local czy_parametry_pudelka_podstawowe=parametry_modul.CzyTak(frame.args["parametry podstawowe funkcji modułu pudełek"])
local pudelko_modul=require("Module:Pudełko");
for nazwa_parametru,wartosc_parametru in pairs(pf.args) do
if(((type(nazwa_parametru)=="number")or((type(nazwa_parametru)=="string")and(not bez_parametrow[nazwa_parametru])and(not bez_parametrowa_tablica[nazwa_parametru])))and((not bez_argumentow_szablonu)or(not bez_argumentow_szablonu[nazwa_parametru])))then
if((not tabela_by_sprawdzic_czy_powstarzaja_sie_parametry_dzieci_i_rodzica[nazwa_parametru])
and(not tabela_bez_argumentow[nazwa_parametru])
and((not czy_bez_argumentow_nienazwanych_rodzica)or((czy_bez_argumentow_nienazwanych_rodzica)and(not tonumber(nazwa_parametru)))
))then
local czy_dodac_do_parametrow;
if czy_parametry_pudelka or czy_parametry_pudelka_podstawowe then
local czy_dodac_do_parametrow=((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw %d+$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa przestrzeni nazw$")
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^nazwa jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^nazwa jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or ((not czy_parametry_pudelka_podstawowe)
and mw.ustring.match(nazwa_parametru,"^typ jednostki %d+$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru))
or (mw.ustring.match(nazwa_parametru,"^typ jednostki$")
and wartosc_parametru~=""
and not pudelko_modul.CzyNiepoprawnaNazwa(wartosc_parametru));
if(czy_dodac_do_parametrow)then
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
else
argumenty_szablonu_modulu_lub_parsera[nazwa_parametru]=wartosc_parametru;
end;
end;
end;
end;
if(co_ma_wywolac==0)then
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
elseif(co_ma_wywolac==1)then
local frame2=pf:newChild{args=argumenty_szablonu_modulu_lub_parsera};
local funkcja=frame.args["Funkcja"];
return require("Module:"..szablon_modul_lub_parser)[funkcja](frame2);
elseif(co_ma_wywolac==2)then
return pf:callParserFunction{name=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
else
return pf:expandTemplate{title=szablon_modul_lub_parser,args=argumenty_szablonu_modulu_lub_parsera};
end;
end;
local function BudowaSzereguZDanych(frame,tab_lancuch,minimum,maksimum)
local parametry_modul=require("Module:Parametry");
local czy_akapit=parametry_modul.CzyTak(frame.args["akapit"]);
local akapit=czy_akapit and "\n\n" or "";
local przecinek=parametry_modul.CzyTak(frame.args["przecinek"]) and ", " or "";
local czy_nowa_linia=parametry_modul.CzyTak(frame.args["nowa linia"]);
local nowa_linia=czy_nowa_linia and "\n" or "";
local wyliczanka=parametry_modul.CzyTak(frame.args["wyliczanka"]);
local przecinek_na_poczatku=parametry_modul.CzyTak(frame.args["początek"]);
local myslnik=parametry_modul.CzyTak(frame.args["myślnik"]);
local warunkowe=parametry_modul.CzyTak(frame.args["warunkowe"]);
local lancuch_znakow="";
local koniec=#tab_lancuch;
for i=1,koniec,1 do
local lancuch=tab_lancuch[i];
lancuch=mw.ustring.gsub(lancuch,"{{min}}",minimum);
lancuch=mw.ustring.gsub(lancuch,"{{max}}",maksimum);
if(not wyliczanka)then
lancuch_znakow=lancuch_znakow..((i~=1)and przecinek or ((przecinek_na_poczatku)and przecinek or ((myslnik)and " - " or "")));
else
lancuch_znakow=lancuch_znakow..((i==1)and ((przecinek_na_poczatku)and ", " or "") or ((i<koniec)and ", " or " i "));
end;
lancuch_znakow=lancuch_znakow..((i~=1)and (czy_akapit and akapit or nowa_linia) or "")..lancuch;
end;
if(warunkowe)then
local parametr=parametry_modul.CzyTak(frame.args["parametr"]);
return p.InstrukcjeWarunkowe(lancuch_znakow,true,parametr);
else
return lancuch_znakow;
end;
end;
p.InstrukcjeWarunkowe = function(ciag,derektywy_specjalne,derektywy_parametrowe)
local ciag_warunkowe_fun=function(s)
local function ParserWiki(s,wywolanie)
local czy_parser=mw.ustring.match(s,wywolanie);
if(czy_parser)then
return mw.getCurrentFrame():preprocess(s);
end;
end
return ParserWiki(s,"^({{%s*#if:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifeq:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#switch:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexpr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#expr:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#iferror:[^{}]*}})$")
or ParserWiki(s,"^({{%s*#ifexist:[^{}]*}})$")
or nil;
end;
local ciag,_=mw.ustring.gsub(ciag,"{{[^{}]+}}",ciag_warunkowe_fun);
if(derektywy_specjalne)then
local ramka_dane_modul=mw.loadData("Module:Ramka/dane");
local tab_zamieniane=ramka_dane_modul.tablica_warunkowe_i_parametr;
ciag=mw.ustring.gsub(ciag,"(__[^_]+__)",function(s)
local tab_szablon=tab_zamieniane[s];
if(tab_szablon)then
if(not derektywy_parametrowe)then return tab_szablon[1];end;
return tab_szablon[2];
end;
return nil;
end);
return ciag;
end;
return ciag;
end;
p.RozpakujArgumenty = function(zmienna_z_argumentami)
local tablica_mikroszablonow={
["{{+}}"]=";",
};
local tabela_bez_argumentow={};
local parametry_modul=require("Module:Parametry");
if(parametry_modul.CzyTak(zmienna_z_argumentami))then
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local podlancuch;
for podlancuch in iter do
podlancuch=mw.text.trim(podlancuch);
local liczba=tonumber(podlancuch);
tabela_bez_argumentow[liczba or mw.ustring.gsub(podlancuch,"{{[^{}]+}}",tablica_mikroszablonow)]=true;
end;
end;
return tabela_bez_argumentow;
end;
p.PakujParametry = function(args)
return mw.text.jsonEncode(args,mw.text.JSON_PRESERVE_KEYS);
end;
p.RozpakujParametry = function (zmienna_z_parametrami)
return mw.text.jsonDecode(zmienna_z_parametrami,mw.text.JSON_PRESERVE_KEYS);
end;
p["Rozwiń"] = function(frame)
return frame:getParent():preprocess(frame.args[1]);
end;
p.Log = function(frame)
local parametry_modul=require("Module:Parametry");
local czy_zwracac=parametry_modul.CzyTak(frame.args["wikitext"]);
local wikitekst=frame.args["log"];
mw.log(wikitekst);
return (czy_zwracac and wikitekst or "");
end;
p.Szablon = function(frame)
return ParserBlokowy(frame,0);
end;
p["Moduł"] = function(frame)
return ParserBlokowy(frame, 1);
end;
p.Parser = function(frame)
return ParserBlokowy(frame, 2);
end;
p.Q =function(frame)
local parametry_modul=require("Module:Parametry");
local args_szablon=parametry_modul.PobierzArgsParametry(frame);
local args_ksiazka={};
for name,value in pairs(args_szablon)do
if(not parametry_modul.TypeNumber(name))then
args_ksiazka[name]=value;
elseif(name>1)then
args_ksiazka[name-1]=value;
elseif(name~=1)then
args_ksiazka[name]=value;
end;
end;
if(parametry_modul.CzyTak(frame.args["wyspecjalizowana"]))then
args_ksiazka["wyspecjalizowana"]=nil;
end;
local szablon=args_szablon[1];
local szablon_ksiazka=p["N"]{args={[1]=szablon,}};
local pf=frame:getParent();
return pf:expandTemplate{title=szablon_ksiazka,args=args_ksiazka,};
end;
p.N=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=tonumber(frame.args["p"]) or 0;
local parametr_n=parametry_modul.CzyTak(frame.args["n"]);
local szablon=parametry_modul["CzyTakCiąg"](parametr) and parametr or ((parametr_p==1) and "Nieznany moduł" or ((parametr_p==2) and "Nieznana kategoria" or "Nieznany szablon"));
szablon=parametry_modul["Odstępy"]{[1]=szablon,[2]="tak",};
szablon=mw.getContentLanguage():ucfirst(szablon);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local przestrzen=((parametr_p==1) and nazwy_np_modul.Module or ((parametr_p==2) and nazwy_np_modul.Category or nazwy_np_modul.Template));
local szablon_ksiazka=przestrzen..":Książka:"..szablon;
local parametr_k=parametry_modul.CzyTak(frame.args["k"]);
if(not parametr_k)then
local techniczne_modul=require("Module:Techniczne");
local liczba_title,tab_title=techniczne_modul.PoliczZbiory{[1]=szablon_ksiazka,tekst=true,};
szablon_ksiazka=((liczba_title>0)and (szablon_ksiazka) or (przestrzen..":"..szablon));
end;
if(parametr_n)then
local nazwy_modul=require("Module:Nazwy");
szablon_ksiazka=nazwy_modul["NAZWASTRONY"]{nazwa=szablon_ksiazka,};
end;
return szablon_ksiazka;
end;
p.A=function(frame)
local parametr=frame.args[1];
local parametry_modul=require("Module:Parametry");
local parametr_p=parametry_modul.CzyTak(frame.args["p"]);
local przestrzen;
if(parametr_p)then
local tabela_nazw={};
local nazwy_modul=require("Module:Nazwy");
przestrzen=nazwy_modul["NAZWAPRZESTRZENI"](parametr,tabela_nazw);
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
if((przestrzen~=nazwy_np_modul.Template)and(przestrzen~=nazwy_np_modul.Module)and(przestrzen~=nazwy_np_modul.Category))then
return parametr;
end;
parametr=nazwy_modul["NAZWASTRONY"](parametr,tabela_nazw);
end;
parametr=mw.ustring.gsub(parametr,"^[Kk]siążka:","");
parametr=(parametr_p and ((przestrzen~="") and (przestrzen..":") or "") or "")..parametr;
return parametr;
end;
p.Powtarzaj = function(frame)
local pf=frame:getParent();
local parametry_modul=require("Moduł:Parametry");
local czy_parametry=parametry_modul.CzyTak(frame.args["parametry"]);
local tabela={};
local zacznij_nazwane;
local parametry_modul=require("Module:Parametry");
if(czy_parametry)then
local FormatujTabela=function(parametr_tab)
return{
parametry_modul.CzyTak(parametr_tab[1]),
parametry_modul.CzyTak(parametr_tab[2]),
tonumber(parametr_tab[3]) or 0,
tonumber(parametr_tab[4]),
tonumber(parametr_tab[5]),
};
end;
local WstawDoTabeli=function(znaczenia_parametr)
local parametr,wartosc=mw.ustring.match(znaczenia_parametr,"%s*([%w_%-][%w%s_%-]-)%s*=%s*(.-)%s*$");
if(parametr and wartosc)then
if((not tonumber(parametr))and(not tabela[parametr]))then
local parametr_tab=mw.text.split(wartosc,"%s*,%s*",false);
tabela[parametr]=FormatujTabela(parametr_tab);
end;
else
if((not tonumber(znaczenia_parametr))and(not tabela[znaczenia_parametr]))then
tabela[znaczenia_parametr]={};
end;
end;
end;
local iter=mw.text.gsplit(mw.text.trim(frame.args["parametry"]),"%s*;%s*",false);
local czy=true;
for znaczenia_parametr in iter do
znaczenia_parametr=mw.text.trim(znaczenia_parametr);
local czy_nie_omijac=parametry_modul.CzyTak(znaczenia_parametr);
if(czy_nie_omijac)then
if(czy)then
zacznij_nazwane=tonumber(znaczenia_parametr);
czy=false;
if(not zacznij_nazwane)then
zacznij_nazwane=0;
WstawDoTabeli(znaczenia_parametr);
end;
else
WstawDoTabeli(znaczenia_parametr);
end;
end;
end;
end;
local tabela_dodatkowe={};
local czy_dodatkowe=parametry_modul.CzyTak(frame.args["dodatkowe"]);
if(czy_dodatkowe)then
local iter=mw.text.gsplit(mw.text.trim(frame.args["dodatkowe"]),"%s*;%s*",false);
for name in iter do
tabela_dodatkowe[name]=true;
end;
end;
if(not zacznij_nazwane)then zacznij_nazwane=0;end;
local function LiczbaZmiennychOOgolniePodstawieParametru(podstawa_parametru_wyszukiwana)
local args=pf.args;
local maksymalna_liczba_nazwy_danego_parametru=0;
for nazwa_parametru, wartosc_parametru in pairs(args)do
local czy_jedynka=false;
if(type(nazwa_parametru)=="string")then
local nazwa_podstawy_parametru,spacja,liczba=mw.ustring.match(nazwa_parametru,"^([%a%-%s]*[%a%-])(%s?)(%d+)$");
if(not nazwa_podstawy_parametru and not spacja and not liczba)then
nazwa_podstawy_parametru=nazwa_parametru;
spacja="";
liczba=1;
czy_jedynka=true;
end;
local subtab=tabela[nazwa_podstawy_parametru];
if(subtab)then
local nie_spacja_parametru=subtab[1];
local czy_z_jedynka=subtab[2];
liczba=tonumber(liczba) or 0;
if((not nie_spacja_parametru and (((spacja==" ")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
or (nie_spacja_parametru and (((spacja=="")and ((liczba>1)or((not czy_jedynka)and(czy_z_jedynka))or((not czy_z_jedynka)and(not czy_jedynka)))) or(((not czy_z_jedynka)and(czy_jedynka))and(spacja=="" and liczba==1))))
)then
if(((podstawa_parametru_wyszukiwana) and (nazwa_podstawy_parametru==podstawa_parametru_wyszukiwana))or(not podstawa_parametru_wyszukiwana))then
maksymalna_liczba_nazwy_danego_parametru=math.max(maksymalna_liczba_nazwy_danego_parametru,liczba);
end;
end;
end;
end;
end;
return maksymalna_liczba_nazwy_danego_parametru;
end;
local MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow=function()
local maksimum_all=0;
for wartosc_parametru,dane_parametru in pairs(tabela)do
if(parametry_modul.TypeString(wartosc_parametru))then
if(not tabela_dodatkowe[wartosc_parametru])then
local maksymalna_liczba_nazwy_danego_parametru=LiczbaZmiennychOOgolniePodstawieParametru(wartosc_parametru);
local maksimum=maksymalna_liczba_nazwy_danego_parametru-(dane_parametru[3] or 0);
maksimum_all=math.max(maksimum-zacznij_nazwane,maksimum_all);
end;
end;
end;
return maksimum_all;
end;
local zacznij_na_poczatku,skoncz_na_koncu;
local tekst_do_analizy=frame.args[1];
if(not frame.args[1])then return "(brak parametru do analizy)";end;
local czy_tekst=parametry_modul.CzyTak(tekst_do_analizy);
if(not czy_tekst)then return "(parametr do analizy pusty)";end;
local start=frame.args["start"];
local koniec=frame.args["koniec"];
local czy_start=parametry_modul.CzyTak(start);
local czy_koniec=parametry_modul.CzyTak(koniec);
local zaznacz=frame.args["zaznacz"];
local tabela_zaznacz={};
if(zaznacz)then
local iter=mw.text.gsplit(zaznacz,"%s*;%s*",false)
for liczba in iter do
tabela_zaznacz[#tabela_zaznacz+1]=tonumber(liczba) or 0;
end;
end;
local czy_rozne=parametry_modul.CzyTak(frame.args["różne"]);
local czy_ma_nazwane;
local function Wylicz_skoncz_na_koncu()
czy_ma_nazwane=parametry_modul["CzySąElementyNazwaneTablicy"](tabela);
if(czy_ma_nazwane)then
if(czy_rozne)then
local maks_numer=parametry_modul.CzyTak(frame.args["maksimum numeracyjne"]);
if(not maks_numer)then
return math.max(MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow(),parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args));
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
else
return MaksymalnyLiczonyNumerElementowPodanychPodstawNazwyParametrow();
end;
else
return parametry_modul.MaksymalnaLiczbaParametruNienazwanegoTablicy(pf.args);
end;
end;
local skoncz_na_koncu_wyliczona=Wylicz_skoncz_na_koncu();
if(not czy_koniec)then
skoncz_na_koncu=skoncz_na_koncu_wyliczona;
else
skoncz_na_koncu=math.max(math.min(skoncz_na_koncu_wyliczona, tonumber(koniec) or 0),0);
end;
zacznij_na_poczatku=math.max(tonumber(start) or 1,1);
if(zacznij_na_poczatku==0)then return "(początek jest ustawiony na zero)";end;
for name, tab_par in pairs(tabela)do
local _4=tab_par[4];local _5=tab_par[5];
if(_4)then zacznij_na_poczatku=math.max(math.min(zacznij_na_poczatku,_4 or 1),1);end;
if(_5)then skoncz_na_koncu=math.max(math.max(skoncz_na_koncu,_5 or 0),0);end;
end;
local czy_niepodane=parametry_modul.CzyTak(frame.args["niepodane"]);
local czy_zero_element=false;
if(czy_niepodane)then
if(zacznij_na_poczatku>skoncz_na_koncu)then
skoncz_na_koncu=zacznij_na_poczatku;
czy_zero_element=true;
end;
end;
local lancuch_znakow="";
local gdy_nic=parametry_modul.CzyTak(frame.args["nic"])and frame.args["nic"] or "";
if(zacznij_na_poczatku>skoncz_na_koncu)then return gdy_nic;end;
local pokolei=parametry_modul.CzyTak(frame.args["po kolei"]);
local wytnij=parametry_modul.CzyTak(frame.args["wytnij"]);
local wytnij_puste=parametry_modul.CzyTak(frame.args["wytnij puste"]);
local nie_wytnij_nazwane=parametry_modul.CzyTak(frame.args["nie wytnij nazwane"]);
local _i=parametry_modul.CzyTak(frame.args["znacznik"])and frame.args["znacznik"] or "_";
local czy_parametry_ze_spacja_i_jedynka=function(nazwa_parametru)
local parametr_tab=tabela[nazwa_parametru];
if(parametr_tab)then
return (not parametr_tab[1]),parametr_tab[2];
end;
return true,false;
end;
if(not czy_rozne)then
if(czy_ma_nazwane)then
local function Analizuj_dla_bez_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local lancuch=tekst_do_analizy;
local czy=nil;
local wytnij_ujemne;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
if(zmienne_parametrowe)then
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
----
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local element=pf.args[zmienne_parametrowe..((ze_spacja)and " " or "")..licznik];
local czy_jedynka=(licznik==1)and ((element and(not wytnij)) or((wytnij)and (parametry_modul.CzyTak(element))));
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((licznik>1)and element or ((licznik==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy=czy or (((wartosc_elementu) and ((not wytnij)and(not wytnij_puste)))
or ((wytnij)and (parametry_modul["CzyTakCiąg"](wartosc_elementu)))
or ((wytnij_puste and not wytnij)and (parametry_modul.CzyTak(wartosc_elementu))));
local tabelka_szablonow={
["{{".._i.."}}"]=licznik,
["{{".._i.._i.."}}"]=(czy_z_jedynka and licznik or ((licznik>1) and licznik or (czy_jedynka and 1 or ""))),
};
local function fun_tabelka_szablonow(ciag)
local ciag_strip=mw.ustring.gsub(ciag,"{{%s*(%S+)%s*}}","{{%1}}");
return tabelka_szablonow[ciag_strip] or ciag;
end;
lancuch=mw.ustring.gsub(lancuch,"{{%s*".._i.."+%s*}}",fun_tabelka_szablonow);
end;
end;
end;
if(not wytnij_ujemne)then
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
czy=czy or czy_zero_element;
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_dla_bez_rozne(tabela);
else
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local element=pf.args[licznik]
local czy=czy_zero_element
or (((element)and ((not wytnij)and(not wytnij_puste)))
or((wytnij)and(parametry_modul["CzyTakCiąg"](element)))
or((wytnij_puste and not wytnij)and(parametry_modul.CzyTak(element))));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or czy or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=mw.ustring.gsub(tekst_do_analizy,"{{%s*".._i.."+%s*}}",licznik);
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame, tab_lancuch,minimum or 0,maksimum);
end;
else
local function Analizuj_z_rozne(tabela_wszystkich_parametrow)
local tab_lancuch={};
local maksimum=0;
local minimum;
for licznik=zacznij_na_poczatku,skoncz_na_koncu,1 do
local czy=false;
local czy_niepuste=false;
local wytnij_ujemne=false;
local function Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka)
local wartosc,klucz;
if(zmienne_parametrowe)then
local function Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia)
local liczba=licznik+liczba_przesuniecia+zacznij_nazwane;
if(liczba<1)then wytnij_ujemne=true;end;
if(liczba>0)then
local element=pf.args[zmienne_parametrowe..((czy_ze_spacja)and " " or "")..liczba];
local czy_jedynka=(liczba==1)and element;
local wartosc_elementu=((czy_z_jedynka) and element or ((not czy_z_jedynka)and((liczba>1)and element or ((liczba==1)and(czy_jedynka and element or pf.args[zmienne_parametrowe])))));
czy_niepuste=czy_niepuste
or ((not nie_wytnij_nazwane)and((wytnij and parametry_modul["CzyTakCiąg"](wartosc_elementu))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(wartosc_elementu))) or (nie_wytnij_nazwane and wartosc_elementu));
czy=czy or wartosc_elementu;
wartosc="{{{"..zmienne_parametrowe..(czy_z_jedynka and (((czy_ze_spacja)and " " or "")..liczba) or ((liczba>1) and (((czy_ze_spacja)and " " or "")..liczba) or (czy_jedynka and (((czy_ze_spacja)and " " or "")..1) or "")));
klucz="{{{%s*"..zmienne_parametrowe..((czy_ze_spacja)and "%s+" or "").."{{%s*".._i.._i.."+%s*}}";
end;
end;
local subtab=tabela[zmienne_parametrowe];
local liczba_przesuniecia=subtab and subtab[3] or 0;
Niewspomniane_w_rozne(zmienne_parametrowe,liczba_przesuniecia);
end;
return klucz,wartosc;
end;
local function Tekst_do_analizy(tekst_do_analizy_przetwarzany,klucz,wartosc)
if((wartosc)and(klucz))then
local przetwarzane,_=mw.ustring.gsub(tekst_do_analizy_przetwarzany,klucz,wartosc);
return przetwarzane;
end;
return "";
end;
local lancuch_zaanalizowany=tekst_do_analizy;
for zmienne_parametrowe,_ in pairs(tabela_wszystkich_parametrow)do
local lokalizacja=mw.ustring.match(tekst_do_analizy,"{{{%s*"..zmienne_parametrowe.."%s*{{%s*".._i.._i.."+%s*}}");
if(lokalizacja)then
zmienne_parametrowe=mw.text.trim(zmienne_parametrowe);
local czy_ze_spacja,czy_z_jedynka=czy_parametry_ze_spacja_i_jedynka(zmienne_parametrowe);
local klucz,wartosc=Analiza_zmiennej_parametrowej(zmienne_parametrowe,licznik,czy_ze_spacja,czy_z_jedynka);
if(wytnij_ujemne)then break;end;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
end;
end;
if(not wytnij_ujemne)then
local zmienna_numerowana_wikikodu=mw.ustring.match(tekst_do_analizy,"{{{%s*{{%s*".._i.."+%s*}}");
czy=czy_zero_element or czy or ((not zmienna_numerowana_wikikodu)and(mw.ustring.match(tekst_do_analizy,"{{%s*".._i.."%s*}}")))or((zmienna_numerowana_wikikodu)and(pf.args[licznik]));
local klucz="{{%s*".._i.."%s*}}";
local wartosc=licznik;
lancuch_zaanalizowany=Tekst_do_analizy(lancuch_zaanalizowany,klucz,wartosc);
czy_niepuste=czy_zero_element
or czy_niepuste
or (wytnij and parametry_modul["CzyTakCiąg"](pf.args[licznik]))
or (wytnij_puste and not wytnij and parametry_modul.CzyTak(pf.args[licznik]));
local czy_jest=parametry_modul.CzyJestTakiElementNumerowanyTabeli(tabela_zaznacz,licznik);
if((pokolei and (not czy_jest)) or (czy and (not wytnij)and(not wytnij_puste)) or (((wytnij)or(wytnij_puste))and(czy_niepuste)) or ((not pokolei)and(czy_jest)))then
tab_lancuch[#tab_lancuch+1]=lancuch_zaanalizowany;
maksimum=math.max(maksimum,licznik);
minimum=math.min(minimum or licznik,licznik);
end;
end;
end;
lancuch_znakow=BudowaSzereguZDanych(frame,tab_lancuch,minimum or 0,maksimum);
end;
Analizuj_z_rozne(tabela);
end;
if(#lancuch_znakow==0)then return gdy_nic;end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch_znakow) or lancuch_znakow;
return przetworzony_wikikod;
end;
p.PowtarzajOdDo=function(frame)
local start=tonumber(frame.args["start"]);
local koniec=tonumber(frame.args["koniec"]);
local krok=tonumber(frame.args["krok"]) or 1;
local parametry_modul=require("Module:Parametry")
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
if((not start)or(not koniec))then return "";end;
if(krok==0)then return "";end;
if(((start>koniec)and(krok>0))or((start<koniec)and(krok<0)))then return "";end;
local kod=frame.args[1];
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
if(kodprzeskok)then
local _;
przeskok,_=mw.ustring.gsub(kodprzeskok,"{{_}}",licznik);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{_}}",licznik);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PrzetwarzajIterującCiąg"]=function(frame)
local poziom=frame.args["ciąg"];
poziom=mw.text.trim(poziom);
local tab_poziom=mw.text.split(poziom,"%s*;%s*",false);
local len_tab_poziom=#tab_poziom;
local start=1;local koniec=len_tab_poziom;local krok=1;
tabela_mikroszablonow={
["{{start}}"]=start,
["{{koniec}}"]=koniec,
["{{krok}}"]=krok,
}
local parametry_modul=require("Module:Parametry");
local lacznik=frame.args["łącznik"] or (parametry_modul.CzyTak(frame.args["nowa linia"]) and "\n" or "");
local kod=frame.args[1];
kod=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_mikroszablonow);
local lancuch="";
local licznik=start;
local kodprzeskok=frame.args["przeskok"];
if(kodprzeskok)then
kodprzeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_mikroszablonow);
end;
local pf=frame:getParent();
while licznik<=koniec do
local przeskok;
local tabela_microszablonow2={
["{{_}}"]=licznik,
["{{ciąg}}"]=tab_poziom[licznik];
};
if(kodprzeskok)then
przeskok=mw.ustring.gsub(kodprzeskok,"{{[^{}]+}}",tabela_microszablonow2);
przeskok=pf:preprocess(przeskok);
end;
local kod2,_=mw.ustring.gsub(kod,"{{[^{}]+}}",tabela_microszablonow2);
lancuch=lancuch..((lancuch~="")and lacznik or "")..kod2;
licznik=licznik+krok+(tonumber(przeskok) or 0);
end;
local przetworzony_wikikod=not parametry_modul.CzyTak(frame.args["nie rozwiń"]) and pf:preprocess(lancuch) or lancuch;
return przetworzony_wikikod;
end;
p["PowtarzajWedług"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
local wybrany_wzor=frame.args["wzór"];
local parametry_modul=require("Module:Parametry")
local czy_link=parametry_modul.CzyTak(frame.args["link"]);
local liczba_list=p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"]{args={["wzór"]=wybrany_wzor,}};
local lancuch="";
local linki_modul=require("Module:S");
for i=start,liczba_list,1 do
local wybrany_link_lub_bez;
local wybrany_link_lub_bez=mw.ustring.gsub(wybrany_wzor,"{{_}}",tostring(i));
if czy_link then
wybrany_link_lub_bez=linki_modul["S"]{[1]=wybrany_link_lub_bez};
end;
lancuch=(lancuch~="")and (lancuch..((i<liczba_list) and ", " or " i ")..wybrany_link_lub_bez) or wybrany_link_lub_bez;
end;
return lancuch;
end;
p["LiczbaPrawychUkośników"] = function(frame)
local nazwa=frame.args[1];
local _,ile=mw.ustring.gsub(nazwa,"/",function(s)return nil;end);
return ile;
end;
p["MaksymalnaLiczbaNumerowanychIstniejącychStronWedługWzoru"] = function(frame)
local start=tonumber(frame.args["start"]) or 1;
licznik=start;
local strona=frame.args["wzór"];
while true do
local strona2,_=mw.ustring.gsub(strona,"{{_}}",licznik);
local title=mw.title.makeTitle('',strona2);
if((not title) or (not title.exists))then
return licznik-1;
end;
licznik=licznik+1;
end;
end;
p["MinimalnyNumerSpośródOdpowiednikowychZmiennych"]=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local numerowane=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_numerowane=parametry_modul.CzyTak(numerowane);
local numer=nil;
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
__numer=tonumber(__numer) or (((__numer)and(__numer=="")) and 1 or nil);
if((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name))))then
if(numer)then
numer=math.min(__numer or name,numer);
else
numer=__numer or name;
end;
end;
end;
return numer;
end;
p.IleJestTakichOdpowiednikowychZmiennych=function(frame)
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local pf=frame:getParent();
local parametr=frame.args["zmienna"];
local numerowane=frame.args["numerowane"];
parametr=techniczne_modul["PrzekształćWzórDoCzystegoTekstu"](parametr);
local czy_numerowane=parametry_modul.CzyTak(numerowane);
local numer=0;
local tab={};
for name,value in pairs(pf.args)do
local __name=tostring(name);
local __numer=mw.ustring.match(__name,"^"..parametr.."(%d*)$");
if((not tab[name])and((__numer)or((czy_numerowane)and(parametry_modul.TypeNumber(name)))))then
numer=numer+1;
tab[tonumber(__numer) or(((__numer)and(__numer==""))and 1 or nil) or name]=true;
end;
end;
return numer;
end;
p["Parametr w tablicy nazw"]=function(frame)
local zmienna_z_argumentami=frame.args["parametry"];
if(not zmienna_z_argumentami)then return;end;
local jedna_pozycja=frame.args["pozycja"];
if(not jedna_pozycja)then return;end;
local parametry_modul=require("Module:Parametry");
jedna_pozycja=parametry_modul["Odstępy"]{[1]=jedna_pozycja,[2]="tak"};
if(jedna_pozycja=="")then return;end;
local od_duzej=parametry_modul.CzyTak(frame.args["od dużej"]);
jedna_pozycja=od_duzej and mw.getContentLanguage():ucfirst(jedna_pozycja) or jedna_pozycja;
local iter=mw.text.gsplit(zmienna_z_argumentami,";",true);
local tablica={};
for pozycja in iter do
pozycja=parametry_modul["Odstępy"]{[1]=pozycja,[2]="tak"};
if(pozycja~="")then
tablica[od_duzej and mw.getContentLanguage():ucfirst(pozycja) or pozycja]=true;
end;
end;
return (tablica[jedna_pozycja] and "tak" or nil);
end;
return p;
edfhhhjrehfgr4qpljefb3dpovzduzm
Moduł:StronicowyParser/ZbieranieDanychStron
828
55009
556342
555457
2026-09-14T16:10:10Z
Persino
2851
556342
Scribunto
text/plain
local p={};
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)
if(lista_dwuelementowa)then
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then
tabela_elementow_strony_kodow[nazwa_obiektu]={};
tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(not uchwyty_bez_numeracji)then
tab_obiekt.uchwyty_bez_numeracji={};
uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
end;
uchwyty_bez_numeracji[kod]=lista_dwuelementowa;
end;
end;
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)
local tab_obiekt=tabela_elementow_strony_kodow[nazwa_obiektu];
if(not tab_obiekt)then return nil;end;
local uchwyty_bez_numeracji=tab_obiekt.uchwyty_bez_numeracji;
if(uchwyty_bez_numeracji)then
return uchwyty_bez_numeracji[kod];
end;
end;
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
uchwyt_obiektu=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(uchwyt_obiektu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or uchwyt_obiektu;
local html_modul=require("Module:Html");
uchwyt_obiektu=html_modul.DecodeHtml(uchwyt_obiektu,true);
if(uchwyt_obiektu~="")then
KtorySzablonMaZwracacKategorie(uchwyt_obiektu);
local lista_dwuelementowa={};
lista_dwuelementowa[1]=uchwyt_obiektu;
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_obiektu)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu])))then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_obiektu=true;
end;
if(tab_numer)then
tab_numer[nazwa_obiektu]=tab_numer[nazwa_obiektu]+1;
local numer=tab_numer[nazwa_obiektu];
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],numer,lista_dwuelementowa);
else
table.insert(tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu],lista_dwuelementowa);
end;
return lista_dwuelementowa;
end;
end;
function p.RozpatrywanieSzablonuObiektuDoNumeracji(self,tabela_parametrow_szablonu,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_obiektu, czy_artykul_korzystany,numer_numeracji,tab_numer,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)
local uchwyt_obiektu=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[numer_numeracji];
if(uchwyt_obiektu)then
local lista_dwuelementowa=p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie);
return lista_dwuelementowa;
end;
end;
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(nazwa_artykulu=="")then return;end;
local czy_element_wystepuje_w_tablicy=false;
local tablica_przestrzeni_wszystkiego=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron;
if(tablica_przestrzeni_wszystkiego)then
local tabela_przestrzeni_ksiazek=tablica_przestrzeni_wszystkiego[nazwa_przestrzeni];
if(tabela_przestrzeni_ksiazek)then
local tabela_ksiazek=tabela_przestrzeni_ksiazek[nazwa_przestrzeni_ksiazki]
if(tabela_ksiazek)then
local tab_ksiazki=tabela_ksiazek[nazwa_ksiazki];
if(tab_ksiazki)then
if(tab_ksiazki.spis)then
--czy_lista_niepusta=true;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
for _,tab_value in ipairs(tab_ksiazki.spis)do
if(tab_value[2])then
for _,artykul_w_bazie_element in ipairs(tab_value[2])do
local artykul_w_bazie=artykul_w_bazie_element[1];
local czy_table=stronicowyparser_potrzebne_modul.CzyTabelaStronyWoluminuSpisuRzeczy(artykul_w_bazie);
artykul_w_bazie=czy_table and artykul_w_bazie[1] or artykul_w_bazie;
local artykul_bez_naglowka_w_bazie=stronicowyparser_potrzebne_modul.TylkoNazwaStronyWoluminuZTabeliPublikacji(artykul_w_bazie);
if(artykul_bez_naglowka_w_bazie==nazwa_artykulu)then
czy_element_wystepuje_w_tablicy=true;
break;
end;
end;
end;
if(czy_element_wystepuje_w_tablicy)then break;end;
end;
end;
end;
end;
end;
end;
if(not czy_element_wystepuje_w_tablicy)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni~=nazwa_przestrzeni)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu~=nazwa_przestrzeni_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu~=nazwa_ksiazki)
or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=nazwa_artykulu))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych stron",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisu treści do korzystanych stron"))then
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisu treści do korzystanych stron");
end;
end;
end;
end;
end;
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)
local czy_ksiazka_z_tylko_odstepami_lub_pusty=(nazwa_ksiazki)and (nazwa_ksiazki=="") or nil;
local czy_artykul_z_tylko_odstepami_lub_pusty=(nazwa_artykulu)and (nazwa_artykulu=="") or nil;
local czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty=(uchwyt_obiektu)and (uchwyt_obiektu=="") or nil;
----
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
----
if(czy_uchwyt_obiektu_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,1);
end;
end;
if(czy_artykul_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,2);
end;
end;
if(czy_ksiazka_z_tylko_odstepami_lub_pusty)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"puste parametry szablonów stronicowych linkujących",nazwa_obiektu,3);
end;
end;
end;
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,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_modulu_aktualna_czy_biezaca,};
----
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
pelna_nazwa_ksiazki=ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and (nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)) or (nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_ksiazki,tabela_nazw)));
--pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
end;
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
if(not czy_inna_wartosc_tekst)then
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,self.nazwa_modulu_biezaca,true);
else
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=tab_nazwy[1],tab_nazwy[2],tab_nazwy[3],tab_nazwy[4];
end;
--local ksiazkowe_modul=require("Module:Książkowe");
--pelna_nazwa_ksiazki=pelna_nazwa_ksiazki or ksiazkowe_modul["PełnaNazwaStronicowejKsiążki"]();
--nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"]();
if((nazwa_przestrzeni)or(nazwa_przestrzeni_ksiazki)or(nazwa_ksiazki)or(nazwa_artykulu))then
local tabela_nazw={};
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=nazwa_przestrzeni or ksiazkowe_modul["NazwaPrzestrzeni"](nil,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwa_przestrzeni_ksiazki or ksiazkowe_modul["NazwaPrzestrzeniKsiążki"](nil,tabela_nazw);
local nazwa_ksiazki=nazwa_ksiazki or ksiazkowe_modul["NazwaTytułuKsiążki"](nil,tabela_nazw);
local nazwa_artykulu=nazwa_artykulu or ksiazkowe_modul["NazwaArtykułuKsiążki"](nil,tabela_nazw);
if(KtorySzablonMaZwracacKategorie)then KtorySzablonMaZwracacKategorie();end;
local 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.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
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,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((nazwa_artykulu)and(not nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or (ksiazkowe_modul["NazwaKsiążki"]()..((nazwa_artykulu~="") and ("/"..nazwa_artykulu) or ""));
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
elseif((not nazwa_artykulu)and(nazwa_ksiazki))then
local ksiazkowe_modul=require("Module:Książkowe");
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or ksiazkowe_modul["NazwaPrzestrzeni"]();
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or ksiazkowe_modul["NazwaKsiążki"]();
----
tabela_parametrow_szablonu["nazwa przestrzeni nazw"]=nazwa_przestrzeni;
tabela_parametrow_szablonu["nazwa jednostki"]=nazwa_jednostki;
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
else
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,nil,czy_inna_wartosc_tekst,{nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,});
end;
end;
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)
local pudelko_modul=require("Module:Pudełko");
if(((nazwa_przestrzeni)and(((nazwa_przestrzeni~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni)))or(nazwa_przestrzeni=="")))
and((nazwa_przestrzeni_ksiazki)and(((nazwa_przestrzeni_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_przestrzeni_ksiazki)))or(nazwa_przestrzeni_ksiazki=="")))
and((nazwa_ksiazki)and(nazwa_ksiazki~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_ksiazki)))
and((nazwa_artykulu)and(((nazwa_artykulu~="")and(not pudelko_modul["CzyNiepoprawnaNazwa"](nazwa_artykulu)))or(nazwa_artykulu=="")))
)then
if(__FUNKCJA_SPRAWDZANIE)then
__FUNKCJA_SPRAWDZANIE(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
end;
else
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki)
and(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu))then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy korzystanych stron");
end;
else
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nieprawidłowe nazwy stron dołączanych do stron");
end;
end;
end;
end;
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)
local linkobiekttab=tablica_zmiennych.linkobiekt[nazwa_obiektu];
local parametry_modul=require("Module:Parametry");
if((not tablica_zmiennych.sprawdzenie_dokonane_linku)and(not parametry_modul["CzySąElementyNumerowaneTablicy"](linkobiekttab)))then
local parametry_modul=require("Module:Parametry");
local nazwa_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki=self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu=self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki)))then
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
tablica_zmiennych.sprawdzenie_dokonane_linku=true;
end;
table.insert(linkobiekttab,uchwyt_obiektu);
if(czy_pobierz)then
if(not tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane)then
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane={};
end;
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
end;
end;
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,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 stronicowyparser_szablony_tekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local JuzPoliczone=function()
if(czy_pobierz)then
stronicowyparser_szablony_tekstu_modul.UstawianiePobierz(tablica_zmiennych,tablica_zmiennych2,obiekt,kod,nazwa_obiektu,uchwyt_obiektu,false);
end;
if(not tablica_zmiennych2.dane_juz_policzone)then tablica_zmiennych2.dane_juz_policzone={};end;
local tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
if(not tab_nazwa_obiektu)then
tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu]={};
tab_nazwa_obiektu=tablica_zmiennych2.dane_juz_policzone[nazwa_obiektu];
end;
local tab_uchwyt=tab_nazwa_obiektu[uchwyt_obiektu];
if(tab_uchwyt)then
return true;
end;
tab_nazwa_obiektu[uchwyt_obiektu]=true;
return false;
end;
if(not parametry_modul.CzyTak(tabela_listy_danych_analizy_ksiazki0))then
local czy_policzone=JuzPoliczone();
if(czy_policzone)then
return;
end;
else
JuzPoliczone();
end;
stronicowyparser_szablony_tekstu_modul.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony(tablica_zmiennych,tablica_zmiennych2);
p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu);
local czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2=tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2[nazwa_obiektu];
local CzyLink=czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2.CzyLink;
local ile_razy=0;
if(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2)then
for _, parametry_obiektu in ipairs(czy_jest_nazwa_obiektu_w_tabela_listy_danych_analizy_ksiazki2) do
if(parametry_obiektu[1]==uchwyt_obiektu)then
ile_razy=ile_razy+1;
if(ile_razy>1)then break;end;
end;
end;
end
if(ile_razy~=1)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"błędy uchwytów korzystanych stron",(CzyLink and "Link" or "Pobierz")..nazwa_obiektu);
end;
p.PusteParametryReferencji(self,nazwa_przestrzeni, 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.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.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni])then self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni]={};end;
local tablica_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(not tablica_przestrzeni[nazwa_przestrzeni_ksiazki])then tablica_przestrzeni[nazwa_przestrzeni_ksiazki]={};end;
local tablica_przestrzeni_ksiazki=tablica_przestrzeni[nazwa_przestrzeni_ksiazki];
if(not tablica_przestrzeni_ksiazki[nazwa_ksiazki])then tablica_przestrzeni_ksiazki[nazwa_ksiazki]={};end;
local tablica_ksiazki=tablica_przestrzeni_ksiazki[nazwa_ksiazki];
if(not tablica_ksiazki.lista_podstron_woluminu)then tablica_ksiazki.lista_podstron_woluminu={};end;
if(nazwa_artykulu)then
if(not tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu])then tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu]={};end;
local artykul_analizowany=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu];
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
else
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
end;
end;
local korzystany_wolumin=false;
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if(not czy_artykul_korzystany)then
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni and self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu and self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu)then
if((self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni==nazwa_przestrzeni)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu==nazwa_przestrzeni_ksiazki)and(self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu==nazwa_ksiazki))then
korzystany_wolumin=true;
if(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu==nazwa_artykulu)then
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
end;
else
return nil;
end;
else
korzystany_wolumin=true;
end;
if(self.tabela_listy_danych_analizy_ksiazki)then
if(self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron)then
local tabela_przestrzeni=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
if(tabela_przestrzeni)then
local tabela_przestrzeni_ksiazki=tabela_przestrzeni[nazwa_przestrzeni_ksiazki];
if(tabela_przestrzeni_ksiazki)then
local tabela_ksiazka=tabela_przestrzeni_ksiazki[nazwa_ksiazki];
if(tabela_ksiazka)then
local lista_artykolow=tabela_ksiazka.lista_podstron_woluminu;
if(lista_artykolow)then
local tabela_artykul=lista_artykolow[nazwa_artykulu];
if(tabela_artykul)then
local dane_zebrane_ze_stron=tabela_artykul.dane_zebrane_ze_stron;
----
if(not czy_artykul_korzystany)then
if(tabela_artykul.TOCSPIS_FUNCTION)then
local wynik=tabela_artykul.TOCSPIS_FUNCTION();
if(wynik)then
tabela_artykul.TOCSPIS_FUNCTION=nil;
end;
end;
end;
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
end;
end;
end;
end;
end;
else
return nil;
end;
else
return nil;
end;
return true;
end;
local nazwy_modul=require("Module:Nazwy");
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,czy_inna=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local function StronaSubstFunkcja(tabela_artykul,spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)
if((czy_szablon_pudelkowy_strony_zbiorczej)and(not czy_artykul_korzystany)and(tabela_artykul)and(not tabela_artykul.strona_zbiorcza))then
--local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
tabela_artykul.strona_zbiorcza=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
end;
if(not wartosc_wyniku)then
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
else
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
end;
end;
----
local pozawoluminowe_strony;
----
local nazwy_np_modul=mw.loadData("Module:Nazwy/Np");
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if((nazwa_przestrzeni~=nazwy_np_modul.Main)
and(nazwa_przestrzeni~=nazwy_np_modul.Wikijunior)
and((nazwa_przestrzeni~=nazwy_np_modul.User)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^([^/]+)$")))
and((nazwa_przestrzeni~=nazwy_np_modul.Wikibooks)or(not mw.ustring.match(nazwa_przestrzeni_ksiazki,"^%s*[Bb]rudnopis/([^/]+)$")))
)then
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
pozawoluminowe_strony=true;
end;
----
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local parametry_modul=require("Module:Parametry");
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
----
local tekst_rozwiniety_calego_artykulu_ref=nil;
local tablica_analizy_obiektow_strony_dany_modul_ref=nil;
local tablica_danych_parametrow_szablonu_strony_ref=nil;
----
local function InneInformacjePrzebneDoAnalizowanejKsiazki()
if(not (stronicowyparser_problemy_modul.CzyJestTakiElementTabeliProblemu(self,"strony poza zakresem obsługiwanym",nil,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki)))then
if((nazwa_przestrzeni)and(nazwa_przestrzeni_ksiazki)and(nazwa_ksiazki))then
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"])then self.tabela_listy_danych_analizy_ksiazki["CzyArtykułKsiążki"]="tak";end;
end;
local czy_ksiazka_istnieje_w_tablicy=((tablica_ksiazki)and(tablica_ksiazki.czy_spis_analizowano))and true or false;
if(not czy_ksiazka_istnieje_w_tablicy)then
tablica_ksiazki.czy_spis_analizowano=true;
local stronicowyparser_spistresci_modul=require("Module:StronicowyParser/SpisTreści");
local nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp;
local tabela_artykulow,tabela_licencji_spisu_tresci,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,adres_ksiazki_glownego_spisu_tresci=stronicowyparser_spistresci_modul.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,czy_artykul_korzystany,function(nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona)
local tablica_przestrzeni_strona=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni_strona];
if(tablica_przestrzeni_strona)then
local tablica_przestrzeni_ksiazki_strona=tablica_przestrzeni_strona[nazwa_przestrzeni_ksiazki_strona];
if(tablica_przestrzeni_ksiazki_strona)then
local tablica_ksiazki_strona=tablica_przestrzeni_ksiazki_strona[nazwa_ksiazki_strona];
if(tablica_ksiazki_strona)then
if(tablica_ksiazki_strona.spis)then
nazwa_przestrzeni_strona_temp,nazwa_przestrzeni_ksiazki_strona_temp,nazwa_ksiazki_strona_temp=nazwa_przestrzeni_strona,nazwa_przestrzeni_ksiazki_strona,nazwa_ksiazki_strona;
tablica_ksiazki.spis=tablica_ksiazki_strona.spis;
tablica_ksiazki.licencja=tablica_ksiazki_strona.licencja;
tablica_ksiazki.nazwa_bazowego_spisu=tablica_ksiazki_strona.nazwa_bazowego_spisu;
tablica_ksiazki.tab_inne_spisy=tablica_ksiazki_strona.tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=tablica_ksiazki_strona.dodatkowe_strony_woluminu;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=tablica_ksiazki_strona.adres_woluminu_bazowego_spisu_rzeczy;
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
return 1;
end;
end;
end
end;
end,function(tekst_rozwiniety_calego_artykulu_ref_spis,nazwa_przestrzeni_ref_spis,nazwa_przestrzeni_ksiazki_ref_spis,nazwa_ksiazki_ref_spis,nazwa_artykulu_ref_spis,tablica_analizy_obiektow_strony_dany_modul_ref_spis,tablica_danych_parametrow_szablonu_strony_ref_spis)
----
if((nazwa_przestrzeni==nazwa_przestrzeni_ref_spis)and(nazwa_przestrzeni_ksiazki==nazwa_przestrzeni_ksiazki_ref_spis)and(nazwa_ksiazki==nazwa_ksiazki_ref_spis)and(nazwa_artykulu==nazwa_artykulu_ref_spis))then
tekst_rozwiniety_calego_artykulu_ref=tekst_rozwiniety_calego_artykulu_ref_spis;
local parametry_modul=require("Module:Parametry");
tablica_analizy_obiektow_strony_dany_modul_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_analizy_obiektow_strony_dany_modul_ref_spis);
tablica_danych_parametrow_szablonu_strony_ref=parametry_modul["KopiujRekurencyjnieTabelęElementów"](tablica_danych_parametrow_szablonu_strony_ref_spis);
end;
----
end);
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)
tablica_ksiazki.spis=tabela_artykulow;
if(czy_artykul_korzystany)then
tablica_ksiazki.licencja=tabela_licencji_spisu_tresci;
end;
tablica_ksiazki.nazwa_bazowego_spisu=nazwa_glownego_spisu;
tablica_ksiazki.tab_inne_spisy=tab_inne_spisy;
tablica_ksiazki.dodatkowe_strony_woluminu=dodatkowe_artykuly;
tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy=czy_podac_adres and adres_ksiazki_glownego_spisu_tresci or nil;
end;
if(tabela_artykulow==0)then
if(czy_artykul_korzystany)then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"korzystana strona główna nie istnieje");
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"dołączone strony główne nie istnieją",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
elseif(tabela_artykulow)then
if(parametry_modul.TypeTable(tabela_artykulow))then
if(adres_ksiazki_glownego_spisu_tresci)then
__FUNKCJA_SPISU(tablica_ksiazki,true);
local tablica_ksiazki_stara=tablica_ksiazki;
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local nazwa_przestrzeni=adres_ksiazki_glownego_spisu_tresci[1];
local nazwa_przestrzeni_ksiazki=adres_ksiazki_glownego_spisu_tresci[2];
local nazwa_ksiazki=adres_ksiazki_glownego_spisu_tresci[3];
if((kod_wyniku==1)or(kod_wyniku==2))then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
local nazwa_artykulu=artykul;
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni ,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
elseif((kod_wyniku==3)or(kod_wyniku==4))then
local tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,artykul);
tablica_ksiazki_stara.referencja_do_nowej_formy_spisu={tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,};
__FUNKCJA_SPISU(tablica_ksiazki,false);
return nil,nil,artykul,kod_wyniku;
end;
else
__FUNKCJA_SPISU(tablica_ksiazki,false);
end;
elseif(tabela_artykulow~=1)then
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku,true;
elseif((wartosc_wyniku==0)and(tabela_artykul))then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku,true;
end;
end;
else
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych"))then
if(((self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=="")and(nazwa_artykulu~=""))or(self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu~=""))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"brak spisów treści do korzystanych książek na ich stronach głównych");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"brak spisów treści do dołączonych książek na ich stronach głównych",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
end;
end;
end;
end;
end;
end;
----
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
if(wynik_bledu)then return wartosc_wyniku;end;
local kod_wyniku_przekierowan=kod_wyniku_bazowy;
----
--if((not tablica_przestrzeni)or(not tablica_przestrzeni_ksiazki)or(not tablica_ksiazki)or(not artykul_analizowany))then
-- tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
--end;
----
if((tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy)and(kod_wyniku_bazowy))--[[and((kod_wyniku_bazowy==1)or(kod_wyniku_bazowy==2))]]then
----
nazwa_przestrzeni=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[1];
nazwa_przestrzeni_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[2];
nazwa_ksiazki=tablica_ksiazki.adres_woluminu_bazowego_spisu_rzeczy[3];
nazwa_artykulu=artykul_bazowy;
----
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki=tablica_ksiazki.referencja_do_nowej_formy_spisu[1],tablica_ksiazki.referencja_do_nowej_formy_spisu[2],tablica_ksiazki.referencja_do_nowej_formy_spisu[3];
end;
local tabela_artykulow=tablica_ksiazki.spis;
if(tabela_artykulow)then
local nazwa_glownego_spisu=tablica_ksiazki.nazwa_bazowego_spisu;
local tab_inne_spisy=tablica_ksiazki.tab_inne_spisy;
local dodatkowe_artykuly=tablica_ksiazki.dodatkowe_strony_woluminu
local artykul,kod_wyniku=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_glownego_spisu,tab_inne_spisy,dodatkowe_artykuly,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,false);
if(kod_wyniku)then
nazwa_artykulu=artykul;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
kod_wyniku_przekierowan=kod_wyniku_przekierowan or kod_wyniku;
end;
local nazwa_modulu=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
local PrzekierownieAwaryjne=function()
if(not kod_wyniku_przekierowan)then
--local artykul2,kod_wyniku2=stronicowyparser_potrzebne_modul.OdpowiednikNaPrzemianArtykularnychStronWoluminu(tabela_artykulow,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,true);
local techniczne_modul=require("Module:Techniczne");
local strona=techniczne_modul.PrzekierowanieDoStrony(nazwa_modulu);
if(strona)then
if(strona~=nazwa_modulu)then
----
local tabela_nazw={};
nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](strona,tabela_nazw);
nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](strona,tabela_nazw);
nazwa_ksiazki=((nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](strona,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](strona,tabela_nazw));
nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](strona,tabela_nazwa);
local wartosc_wyniku,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni=__FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(not wartosc_wyniku)then
return wartosc_wyniku;
elseif(wartosc_wyniku==0)then
if(tabela_artykul)then
StronaSubstFunkcja(tabela_artykul,tabela_ksiazka.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
return wartosc_wyniku;
else
return wartosc_wyniku;
end;
end;
tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany=__FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
nazwa_modulu=strona;
else
return 0;
end;
end;
end;
end;
local wynik=PrzekierownieAwaryjne();
if(czy_artykul_korzystany)then
self.nazwa_modulu_biezaca=nazwa_modulu;
end;
if(wynik)then return wynik;end;
----
if(czy_artykul_korzystany)then
if((not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu)and(not self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu))then
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni=nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu=nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu=nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu=nazwa_artykulu;
end;
end;
local nazwa_modulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and nazwy_modul["NazwaModułu"](self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki,self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu) or nazwa_modulu;
-- przydzielanie tablicy
if(czy_artykul_korzystany)then
artykul_analizowany.artykul_biezacy=true;
tablica_ksiazki.ksiazka_analizowana=true;
end;
--koniec
--local iterator=mw.ustring.gmatch(tekst_rozwiniety_calego_artykulu,"{{[^{}]-}}");
if(not tablica_zmiennych)then tablica_zmiennych={};end;
if(not tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2)then tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};end;
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
for _,element_w_tablicy_obiekt in pairs(stronicowyparser_obiekty_modul.tablica_obiektowych_form)do
local CzyLink=element_w_tablicy_obiekt.CzyLink;
local CzyNum=element_w_tablicy_obiekt.CzyNum;
local wartosc=element_w_tablicy_obiekt[1];
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum,};
if(czy_artykul_korzystany)then tablica_zmiennych.linkobiekt[wartosc]={CzyLink=CzyLink,CzyNum=CzyNum;};end;
end;
local function StronaZbiorcza()
if(czy_artykul_korzystany)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
local wynik=stronicowyparser_stronasubst_modul.AnalizaStronaSubst(self.tabela_listy_danych_analizy_ksiazki,tablica_ksiazki.spis,nil,TakFun,NieFun,nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
artykul_analizowany.strona_zbiorcza=(wynik and "tak" or "");
return wynik;
end;
return nil;
end;
local strona_zbiorcza=StronaZbiorcza();
local pelna_nazwa_ksiazki=nazwy_modul["NazwaModułu"](nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,"");
local 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.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
return true;
elseif(stronicowyparser_obiekty_modul.strona_start[nazwa_szablonu])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return true;
end;
end);
if(wynik)then break;end;
end;
end;
end;
end;
local uzyskano_w_wyniku_parsowania_wywolanie_szablonu;
local analiza_stron_korzystanych_zbiorczych=nil;
local stronastart=nil;
----
local tablica_obiekty=stronicowyparser_obiekty_modul.obiekty;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local format_elementowy_referencji_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_referencji_obiektowy;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_linkowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
local szablony_wykorzystywane_przez_strony_zbiorcze=stronicowyparser_obiekty_modul.szablony_wykorzystywane_przez_strony_zbiorcze;
local format_elementowy_obiektowy=stronicowyparser_obiekty_modul.format_elementowy_obiektowy;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.numerowane_obiekty;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_naglowka=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_tekstu;
----
local strona_start=stronicowyparser_obiekty_modul.strona_start;
local strona_start_ze_spisem_rzeczy_strony=stronicowyparser_obiekty_modul.strona_start_ze_spisem_rzeczy_strony;
local strona_start_inne=stronicowyparser_obiekty_modul.strona_start_inne;
local szablony_strony_zbiorczej=stronicowyparser_obiekty_modul.strona_zbiorcza;
----
local tab_szablony=stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_kontenerowe;
local tab_szablony_stronicowe_niekontenerowe=stronicowyparser_obiekty_modul.szablony_stronicowe_niekontenerowe;
local tab_szablony_stronicowe_formatowania_tekstu=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
local tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego=stronicowyparser_obiekty_modul.szablony_stronicowe_kontenerowe_formatowania_wzorowego;
----
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local tabela_elementow_strony_kodow={};
-- for uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod in iterator do
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)
if(czy_artykul_korzystany)then
if(tabela_parametrow_szablonu)then
if((not stronastart)and(self.tabela_listy_danych_analizy_ksiazki.formatowanie==nil))then
if(strona_start[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie=tabela_parametrow_szablonu["formatowanie"];
stronastart=true;
local boczne_menu=tabela_parametrow_szablonu["boczne menu"] or "";
local spis_tresci=tabela_parametrow_szablonu["spis treści"] or "TOC";
if((parametry_modul.CzyTak(boczne_menu))or(parametry_modul.CzyTak(spis_tresci)))then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(strona_start_ze_spisem_rzeczy_strony[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
stronastart=true;
return;
elseif(strona_start_inne[nazwa_szablonu_wywolania])then
self.tabela_listy_danych_analizy_ksiazki.strona_ze_szablonem_strona_start="tak";
self.tabela_listy_danych_analizy_ksiazki.formatowanie="tak";
stronastart=true;
return;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_prestreni_nazw))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
elseif((strona_zbiorcza)and(not analiza_stron_korzystanych_zbiorczych)and(szablony_strony_zbiorczej[nazwa_szablonu_wywolania]))then
analiza_stron_korzystanych_zbiorczych=true;
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"];
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"];
if((not parametry_modul.CzyTak(nazwa_przestrzeni))and(not parametry_modul.CzyTak(nazwa_jednostki)))then
return;
end;
end;
end;
end;
local plik=mw.ustring.match(nazwa_szablonu_wywolania,"^:");
if(plik==nil)then
if(tabela_parametrow_szablonu)then
if(not parametry_modul.CzyTak(tabela_parametrow_szablonu["bez automatu"]))then
local czy_wypowiedzenie=(nazwa_szablonu_wywolania=="Wypowiedzenie");
local czy_linkobiekt;
local czy_link;local czy_pobierz;
local czy_wypowiedzenie_z_parametrami;
local czy_linkobiekt_z_parametrami;
if(czy_wypowiedzenie)then
czy_linkobiekt=false;
czy_link=false;
czy_pobierz=false;
czy_wypowiedzenie_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["rodzaj"]);
else
czy_linkobiekt=(nazwa_szablonu_wywolania=="LinkObiekt");
if(czy_linkobiekt)then
czy_link=true;
czy_pobierz=false;
czy_linkobiekt_z_parametrami=parametry_modul.CzyTak(tabela_parametrow_szablonu["typ"]);
else
czy_link=mw.ustring.match(nazwa_szablonu_wywolania,"^Link");
czy_pobierz=(not czy_link) and mw.ustring.match(nazwa_szablonu_wywolania,"^Pobierz") or nil;
end;
end;
if((not czy_link)and(not czy_pobierz))then
local wartosc_elementu;local numer_uchwytu;
if(not czy_wypowiedzenie_z_parametrami) then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_numerowane_obiekty[nazwa_szablonu_wywolania];
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
else
local rodzaj=tabela_parametrow_szablonu["rodzaj"];
if(rodzaj)then
wartosc_elementu=format_elementowy_obiektowy[rodzaj] and rodzaj or nil;
if(wartosc_elementu)then
numer_uchwytu=tablica_obiekty[5];
end;
end;
end;
if(wartosc_elementu)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
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_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Link"..wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
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_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
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_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
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_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="Obiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
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_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=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.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,lista_dwuelementowa,kod);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane=true;
end;
return;
elseif(stronicowyparser_obiekty_modul.szablony_stronicowego_parsera.szablony_tekstu[nazwa_szablonu_wywolania])then
local tab_wartosc_elementu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_tekstu[nazwa_szablonu_wywolania];
local wartosc_elementu;local numer_uchwytu;
if(tab_wartosc_elementu)then
wartosc_elementu=tab_wartosc_elementu[1];
numer_uchwytu=tab_wartosc_elementu[2];
end;
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(czy_artykul_korzystany)then
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
if(uchwyt_obiektu and (uchwyt_obiektu~=""))then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=wartosc_elementu..":"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
end;
end;
local lista_dwuelementowa=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 stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
local tekst=stronicowyparser_szablonytekstu_modul.ParametrTekstowySzablonuTekstu(tabela_parametrow_szablonu);
local bez_preprocess=stronicowyparser_szablonytekstu_modul.SzablonTekstuBezPreProcess(tabela_parametrow_szablonu);
local czy_bez_preprocess=parametry_modul.CzyTak(bez_preprocess);
if(tekst)then
local czy_szablon_wszystko=false;
tekst=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(tekst,nil,tablica_analizy_obiektow_strony_dany_modul,
function(szablon,obiekt,kod)
if(czy_bez_preprocess)then return nil;end;
if(obiekt=="SZABLON")then
local wynik=szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,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;
stronicowyparser_szablonytekstu_modul.DodawanieDoBazyStronySzablonuTekstu(tablica_zmiennych,wartosc_elementu,lista_dwuelementowa,obiekt,kod,tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,czy_artykul_korzystany);
end;
return;
elseif(czy_artykul_korzystany)then
if(czy_linkobiekt)then
local function KtorySzablonMaZwracacKategorie(uchwyt_obiektu,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie="LinkObiekt:"..((uchwyt_obiektu)and uchwyt_obiektu or "");
end;
end;
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_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
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;
elseif(stronicowyparser_obiekty_modul.szablony_spisu[nazwa_szablonu_wywolania])then
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwa_ksiazki=tabela_parametrow_szablonu["nazwa książki"] or tabela_parametrow_szablonu[2] or "";
local artykul=tabela_parametrow_szablonu["nazwa artykułu"] or tabela_parametrow_szablonu[1] or "";
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu_wywolania..":"..nazwa_ksiazki..((artykul)and ("/"..artykul) or "")
end;
end;
local czy_analiza=parametry_modul.CzyTak(tabela_parametrow_szablonu["analiza"]);
local czy_parser=parametry_modul.CzyTak(tabela_parametrow_szablonu["parser"]);
local czy_specjalne=parametry_modul.CzyTak(tabela_parametrow_szablonu["specjalne"]);
local dokumentacja=tabela_parametrow_szablonu["dokumentacja"];
local czy_dokumentacja;
if(not dokumentacja)then
czy_dokumentacja=czy_analiza or czy_specjalne or czy_parser;
else
czy_dokumentacja=parametry_modul.CzyTak(dokumentacja);
end;
if(
((czy_dokumentacja)and(czy_parser))
or((not czy_dokumentacja)and(czy_analiza))
)then
p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie);
end;
return;
else
local function KtorySzablonMaZwracacKategorie(uchwyt,__FUNKCJA_KATEGORIE)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
local nazwy_modul=require("Module:Nazwy");
local nazwa_przestrzeni=tabela_parametrow_szablonu["nazwa przestrzeni nazw"] or "";
local nazwa_jednostki=tabela_parametrow_szablonu["nazwa jednostki"] or "";
local nazwa_symulacyjnej_strony=((nazwa_przestrzeni~="") and (nazwa_przestrzeni..":") or "")..nazwa_jednostki;
local uchwyt=nazwa_szablonu_wywolania..":"..nazwa_symulacyjnej_strony;
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=uchwyt;
end;
end;
if((stronicowyparser_obiekty_modul.szablony_kontenerowe[nazwa_szablonu_wywolania])
or(szablony_strony_zbiorczej[nazwa_szablonu_wywolania])
)then
if(szablony_wykorzystywane_przez_strony_zbiorcze[nazwa_szablonu_wywolania])then
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;
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony=nazwy_modul["PEŁNABAZOWANAZWASTRONY"](nazwa_modulu);
end;
IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu);
----
local tablica_danych_nazwy_artykulu=tablica_ksiazki.lista_podstron_woluminu[nazwa_artykulu] or {};
tablica_danych_nazwy_artykulu.uchwyty_i_numeracje=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
----
local wiki_modul=require("Module:Wiki");
tablica_danych_nazwy_artykulu.link_wikidane={wiki_modul.KodyKlasStronyNaDanejWiki{["strona"]=nazwa_modulu_aktualna_czy_biezaca,["nagłówek"]=true,["aktywny"]=true,},};
if(not czy_artykul_korzystany)then
if(pozawoluminowe_strony)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local nazwa_modulu_korzystana_bazowa=self.tabela_listy_danych_analizy_ksiazki.nazwa_bazowa_strony;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnika"](nazwa_modulu_korzystana_bazowa,nazwa_modulu);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
end;
else
local niekorzystany_wolumin=(not korzystany_wolumin);
if(niekorzystany_wolumin)then
if(not tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony)then
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local zrostek=stronicowyparser_pomocne_modul["SkrótDoNumeruOdnośnikaDołączonejKsiążki"](nazwa_ksiazki);
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,niekorzystany_wolumin,czy_artykul_korzystany,};
end;
end;
end;
end;
----
if(czy_artykul_korzystany)then
if(analiza_stron_korzystanych_zbiorczych)then
local stronicowyparser_stronasubst_modul=require("Module:StronicowyParser/StronaSubst");
tekst_rozwiniety_calego_artykulu=stronicowyparser_stronasubst_modul.LiczOperacjeStronZbiorczych(self,tekst_rozwiniety_calego_artykulu,tablica_ksiazki.spis,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony);
end;
end;
local strona;
if(czy_artykul_korzystany)then strona="";else strona=nazwa_modulu;end;
----
if(czy_artykul_korzystany)then
local stronicowyparser_szablonytekstu_modul=require("Module:StronicowyParser/SzablonyTekstu");
stronicowyparser_szablonytekstu_modul.UstawPobierzKorzystanie(tablica_zmiennych);
tekst_rozwiniety_calego_artykulu=stronicowyparser_szablonytekstu_modul.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,IterowaniePoElementachTekstu) or tekst_rozwiniety_calego_artykulu;
end;
----
local function SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca)
return function()
if(((czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_korzystane))
or((not czy_artykul_korzystany)and(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone)))then
----
local tablica_obiektow_strony_danych_kodow_specjalnych_modul=nil;
----
tekst_rozwiniety_calego_artykulu,tablica_obiektow_strony_danych_kodow_specjalnych_modul=szablonowe_modul:KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania(tekst_rozwiniety_calego_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,false);
----
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"powtórka nagłowek w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"powtórka nagłówek w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki)
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)
if(czy_artykul_korzystany)then
if(not stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej"))then
stronicowyparser_problemy_modul.UstawTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
else
stronicowyparser_problemy_modul.DodawanieProblemowegoElementuDoTablicy(self,"nagłowek w tekście rozdziału w stronie dołączonej",nil,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki);
if(not self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie)then
self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie=nazwa_szablonu..":"..(numeracja_aktualna or "");
end;
end;
end;
local function CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu()
return stronicowyparser_problemy_modul.CzyJestTakiProblemowyElement(self,"nagłówek w tekście rozdziału w stronie korzystanej");
end;
local nazwa_naglowka=stronicowyparser_obiekty_modul.nazwa_szablonu_wprowadzenia_tekstu;
local stronicowyparser_glownafunkcjazbieraniadanych_modul=require("Module:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron");
local tablica_naglowka_obiekty=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2[nazwa_naglowka];
tablica_naglowka_obiekty.uchwyty_bez_numeracji={};
local toc=stronicowyparser_glownafunkcjazbieraniadanych_modul.SpisRzeczyWedlePodanegoTekstu(self,tekst_rozwiniety_calego_artykulu,strona, czy_artykul_korzystany,nil,tablica_naglowka_obiekty.uchwyty_bez_numeracji, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,{KtorySzablonMaZwracacKategorieNaglowek,KtorySzablonMaZwracacKategorieTekst,CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu,},nil,tabela_elementow_strony_kodow);
tablica_danych_nazwy_artykulu.TOC=toc;
return true;
end;
end;
end;
local czy_spis_function=SpisToc(self,czy_artykul_korzystany,tablica_danych_nazwy_artykulu,tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_zmiennych,tabela_elementow_strony_kodow,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki, nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca);
local wynik=czy_spis_function();
if(not czy_artykul_korzystany)then
if(not wynik)then
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=czy_spis_function;
end;
end;
StronaSubstFunkcja(tablica_danych_nazwy_artykulu,tablica_ksiazki.spis,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
if(czy_artykul_korzystany)then
self.tabela_listy_danych_analizy_ksiazki.link_wikidane=tablica_danych_nazwy_artykulu.link_wikidane;
self.tabela_listy_danych_analizy_ksiazki.prefiks_numeru_woluminowego_strony=tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnego_artykulu=tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2;
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw=self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron[nazwa_przestrzeni];
self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_przestrzeni_nazw[nazwa_przestrzeni_ksiazki];
self.tabela_listy_danych_analizy_ksiazki.tablica_aktualnej_ksiazki=self.tabela_listy_danych_analizy_ksiazki.tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki[nazwa_ksiazki];
--self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron=tablica_zmiennych;
end;
if(not czy_artykul_korzystany)then
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=tablica_zmiennych;
if(not self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista)then self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista={};end;
table.insert(self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista,tablica_danych_nazwy_artykulu);
else
local dane_zebrane_ze_stron_lista=self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron_lista;
if(dane_zebrane_ze_stron_lista)then
for _,tablica_danych_nazwy_artykulu in ipairs(dane_zebrane_ze_stron_lista)do
tablica_danych_nazwy_artykulu.dane_zebrane_ze_stron=nil;
tablica_danych_nazwy_artykulu.TOCSPIS_FUNCTION=nil;
end;
end;
tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane=nil;
end;
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
end;
return p;
7c3httr427z34ckb8wo3562xl4sutnh
Wikibooks:Księgozbiór/Podręczniki w układzie alfabetycznym
4
56294
556447
517415
2026-09-15T02:21:03Z
Persino
2851
556447
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude>
{{Blok ramkowy|temat=10|tytuł=Podręczniki w układzie alfabetycznym|ikonka=Oxygen15.04.1-kthesaurus.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=45px|60px}}|margines={{{margines|0 0 2px 0}}}}}
'''Przeglądaj podręczniki:'''
{{lr|Księgozbiór}} •
{{lru|Księgozbiór/Wybrane}} •
{{lru|Księgozbiór/Alfabetycznie}} •
{{lru|Księgozbiór/Tematycznie}} •
{{lk|Kategorie podręcznikowe|Według kategorii}} •
{{lr|Księgozbiór/Poziom|Według poziomu}} •
{{lr|Księgozbiór/Status|Według rozwoju}} •
{{lk|Wikijunior}}.
{{Blok ramkowy/Zamknij}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
e3vsx74tvk6ld3a3ueuz7842bp0o9dc
556452
556447
2026-09-15T02:24:42Z
Persino
2851
556452
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude><!--
-->{{Blok ramkowy|temat=10|tytuł=Podręczniki w układzie alfabetycznym|ikonka=Oxygen15.04.1-kthesaurus.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=45px|60px}}|margines={{{margines|0 0 2px 0}}}}}
'''Przeglądaj podręczniki:'''
{{lr|Księgozbiór}} •
{{lru|Księgozbiór/Wybrane}} •
{{lru|Księgozbiór/Alfabetycznie}} •
{{lru|Księgozbiór/Tematycznie}} •
{{lk|Kategorie podręcznikowe|Według kategorii}} •
{{lr|Księgozbiór/Poziom|Według poziomu}} •
{{lr|Księgozbiór/Status|Według rozwoju}} •
{{lk|Wikijunior}}.
{{Blok ramkowy/Zamknij}}<!--
--><noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
09mdn5mvns0h30isgmyyt3onrhaiz3m
Wikibooks:Księgozbiór/Portale
4
56295
556446
543996
2026-09-15T02:19:53Z
Persino
2851
556446
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude>
{{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}}
'''Przeglądaj portale:'''
{{lo|Nauki ścisłe i przyrodnicze|f=Portal}} •
{{lo|Informatyka|f=Portal}} •
{{lo|Nauki techniczne|f=Portal}} •
{{lo|Nauki społeczne i humanistyczne|f=Portal}} •
{{lo|Sport i rozrywka|f=Portal}} •
{{lo|Hobby, poradniki i książki różne|f=Portal}}.
{{Blok ramkowy/Zamknij}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
t66w14cagpfx2g0te93duz6weuhwyrm
556449
556446
2026-09-15T02:23:09Z
Persino
2851
556449
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude><!--
-->>{{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}}
'''Przeglądaj portale:'''
{{lo|Nauki ścisłe i przyrodnicze|f=Portal}} •
{{lo|Informatyka|f=Portal}} •
{{lo|Nauki techniczne|f=Portal}} •
{{lo|Nauki społeczne i humanistyczne|f=Portal}} •
{{lo|Sport i rozrywka|f=Portal}} •
{{lo|Hobby, poradniki i książki różne|f=Portal}}.
{{Blok ramkowy/Zamknij}}<!--
--><noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
nmtyl65r9mo5edx5qnahpwkohia50xg
556450
556449
2026-09-15T02:23:30Z
Persino
2851
556450
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude><!--
-->{{Blok ramkowy|temat=10|tytuł=Portale|ikonka=One wikibook.svg|rozmiar-ikonki={{#switch:{{FULLPAGENAME}}|{{#invoke:Pudełko|Strona główna tego projektu}}|{{Ns:Template}}:Strona główna/Wybrane=50px|#default=60px}}|margines={{{margines|0 0 2px 0}}}}}
'''Przeglądaj portale:'''
{{lo|Nauki ścisłe i przyrodnicze|f=Portal}} •
{{lo|Informatyka|f=Portal}} •
{{lo|Nauki techniczne|f=Portal}} •
{{lo|Nauki społeczne i humanistyczne|f=Portal}} •
{{lo|Sport i rozrywka|f=Portal}} •
{{lo|Hobby, poradniki i książki różne|f=Portal}}.
{{Blok ramkowy/Zamknij}}<!--
--><noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
5spprcuqjs3jpbt5b71h9pkvqoblmxa
Wikibooks:Księgozbiór/Spis alfabetyczny
4
56313
556448
517417
2026-09-15T02:22:21Z
Persino
2851
556448
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude>
{{Blok ramkowy|temat=10|tytuł={{lk|Spis alfabetyczny|według spisu alfabetycznego}}|szerokość=100%|margines={{{margines|0}}}}}
{{Center|{{lku|Spis alfabetyczny/A}} {{lku|Spis alfabetyczny/B}} {{lku|Spis alfabetyczny/C}} {{lku|Spis alfabetyczny/Ć}} {{lku|Spis alfabetyczny/D}} {{lku|Spis alfabetyczny/E}} {{lku|Spis alfabetyczny/F}} {{lku|Spis alfabetyczny/G}} {{lku|Spis alfabetyczny/H}} {{lku|Spis alfabetyczny/I}} {{lku|Spis alfabetyczny/J}} {{lku|Spis alfabetyczny/K}} {{lku|Spis alfabetyczny/L}} {{lku|Spis alfabetyczny/Ł}} {{lku|Spis alfabetyczny/M}} {{lku|Spis alfabetyczny/N}} {{lku|Spis alfabetyczny/O}} {{lku|Spis alfabetyczny/Ó}} {{lku|Spis alfabetyczny/P}} {{lku|Spis alfabetyczny/Q}} {{lku|Spis alfabetyczny/R}} {{lku|Spis alfabetyczny/S}} {{lku|Spis alfabetyczny/Ś}} {{lku|Spis alfabetyczny/T}} {{lku|Spis alfabetyczny/U}} {{lku|Spis alfabetyczny/V}} {{lku|Spis alfabetyczny/W}} {{lku|Spis alfabetyczny/X}} {{lku|Spis alfabetyczny/Y}} {{lku|Spis alfabetyczny/Z}} {{lku|Spis alfabetyczny/Ź}} {{lku|Spis alfabetyczny/Ż}} ({{lk|Wszystkie książki|Wszystkie}})}}
{{Blok ramkowy/Zamknij}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
m52ufvxkjbiiii0vwts580jm86d7aar
556451
556448
2026-09-15T02:24:05Z
Persino
2851
556451
wikitext
text/x-wiki
<noinclude><!--
-->{{ProstaStronaStart}}<!--
-->__NOTOC__<!--
--></noinclude><!--
-->{{Blok ramkowy|temat=10|tytuł={{lk|Spis alfabetyczny|według spisu alfabetycznego}}|szerokość=100%|margines={{{margines|0}}}}}
{{Center|{{lku|Spis alfabetyczny/A}} {{lku|Spis alfabetyczny/B}} {{lku|Spis alfabetyczny/C}} {{lku|Spis alfabetyczny/Ć}} {{lku|Spis alfabetyczny/D}} {{lku|Spis alfabetyczny/E}} {{lku|Spis alfabetyczny/F}} {{lku|Spis alfabetyczny/G}} {{lku|Spis alfabetyczny/H}} {{lku|Spis alfabetyczny/I}} {{lku|Spis alfabetyczny/J}} {{lku|Spis alfabetyczny/K}} {{lku|Spis alfabetyczny/L}} {{lku|Spis alfabetyczny/Ł}} {{lku|Spis alfabetyczny/M}} {{lku|Spis alfabetyczny/N}} {{lku|Spis alfabetyczny/O}} {{lku|Spis alfabetyczny/Ó}} {{lku|Spis alfabetyczny/P}} {{lku|Spis alfabetyczny/Q}} {{lku|Spis alfabetyczny/R}} {{lku|Spis alfabetyczny/S}} {{lku|Spis alfabetyczny/Ś}} {{lku|Spis alfabetyczny/T}} {{lku|Spis alfabetyczny/U}} {{lku|Spis alfabetyczny/V}} {{lku|Spis alfabetyczny/W}} {{lku|Spis alfabetyczny/X}} {{lku|Spis alfabetyczny/Y}} {{lku|Spis alfabetyczny/Z}} {{lku|Spis alfabetyczny/Ź}} {{lku|Spis alfabetyczny/Ż}} ({{lk|Wszystkie książki|Wszystkie}})}}
{{Blok ramkowy/Zamknij}}<!--
--><noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Metastrony Wikibooks}}<!--
--></noinclude>
dz6j4tmp66m4ljbe1p2f3u634uvh3r2
Szablon:Opis kategorii/silnik
10
57974
556454
545073
2026-09-15T02:44:16Z
Persino
2851
556454
wikitext
text/x-wiki
<includeonly><div class="strona-opis-kategorii-infoboksy siostrzane-zmienna-strona-opis-kategorii-nawigacja">{{#if:{{{nawigacja|}}}|<!--
-->{{{nawigacja}}}<!--
-->|}}</div><!--
--><div class="strona-opis-kategorii-infoboksy siostrzane-zmienna-strona-opis-kategorii-infoboksy">{{#if:{{{siostrzane|}}}|<!--
-->{{{siostrzane}}}<!--
-->|}}</div><!--
--><div class="strona-opis-kategorii-infoboksy siostrzane-projekty-kategorii-strona-opis-kategorii-infoboksy">{{{siostrzane projekty|}}}</div><!--
--><div class="strona-opis-kategorii-infoboksy typ-kategorii-strona-opis-kategorii-infoboksy"><!--
-->{{#switch:{{FULLPAGENAME}}
| {{ns:Category}}:Kategorie = {{Główna kategoria}}
| {{Ns:Category}}:Metastrony Wikibooks = {{Główna kategoria}}{{Metakategoria}}
| {{Ns:Category}}:Kategorie dla kategorii = {{Metakategoria|ukryta=tak|kontener=tak}}<!--
-->}}</div><div class="strona-opis-kategorii-infoboksy kategorie-dla-kategorii-strona-opis-kategorii-infoboksy">{{#if:{{{kategoria dla kategorii|}}}|{{Kategoria dla kategorii}}}}</div>{{#if:{{{bez kolumn|}}}||<div id="strona-opis-kategorii-overflow-zawartość" class="strona-opis-kategorii-overflow-zawartość mw-overflow-x" style="overflow:auto;width:auto;box-sizing:border-box;"><div id="strona-opis-kategorii-zawartość" class="strona-opis-kategorii-zawartość" style="min-width:{{#if:{{{tabela|}}}|auto|{{{minimalna szerokość kolumn|{{#if:{{{siostrzane}}}{{{siostrzane projekty|}}}|34.8125rem|50.375rem}}}}}}};width:auto;column-rule:solid 1px;column-count:{{{liczba kolumn|1}}};border: solid #aaa 1px;padding:0.1875rem;background:white;box-sizing:border-box;">}}{{#if:{{{grupuje|}}}|<div>
{{{grupuje}}}</div>|}}{{#if:{{{uwagi|}}}|<div>
{{{uwagi}}}</div>|}}{{#if:{{{liczba stron|}}}|<div>
{{{liczba stron}}}</div>|}}{{#if:{{{osobne grupują|}}}|<div>{{Strong|Osobne kategorie grupują}} {{{osobne grupują}}}</div>
|}}{{#if:{{{główne strony|}}}|<div>{{Strong|Główne strony:}} {{{główne strony}}}</div>
|}}{{#if:{{{portal|}}}|<div>{{Strong|Portal:}} {{#ifexist:Portal:{{{portal}}}
|{{lo|{{{portal}}}|miano przestrzeni nazw=Portal}}
|{{#if:{{#invoke:Wikidane|id|Portal:{{{portal}}}|idwiki=plwiki}}
|{{lpt|{{{portal}}}}}
|{{{portal}}}
}}
}}</div>
}}{{#if:{{{wikiprojekt|}}}|<div>{{Strong|Wikiprojekt:}} {{#ifexist:Wikiprojekt:{{{wikiprojekt}}}
|{{lo|{{{wikiprojekt}}}|miano przestrzeni nazw=Wikiprojekt}}
|{{#if:{{#invoke:Wikidane|id|Wikiprojekt:{{{wikiprojekt}}}|idwiki=plwiki}}
|{{lpw|{{{wikiprojekt}}}}}
|{{{wikiprojekt}}}
}}
}}</div>
}}{{#if:{{{zobacz|}}}|<div>{{Strong|Zobacz też:}} {{{zobacz}}}</div>
|}}{{#if:{{{szablony|}}}|<div>{{Strong|Związane szablony:}} {{{szablony}}}</div>
|}}{{#if:{{{zgłaszające|}}}|<div>{{Strong|Szablony zgłaszające:}} {{{zgłaszające}}}</div>
|}}{{#if:{{{linkujące|}}}|<div>{{Strong|Linkujące do strony:}} {{{linkujące}}}</div>
|}}{{#if:{{{związane|}}}|<div>{{Strong|Powiązane kategorie:}} {{{związane}}}</div>
|}}{{#if:{{{zobacz opisy|}}}|<div>{{Strong|Zobacz też opisy:}} {{{zobacz opisy}}}</div>
|}}{{#if:{{{dokumentacje|}}}|<div>{{Strong|Powiązane dokumentacje:}} {{{dokumentacje}}}</div>
|}}{{#if:{{{opis stron|}}}|<div>{{Strong|Opis stron:}}
{{{opis stron}}}</div>
|}}{{#if:{{{przykłady|}}}|<div>
{{{przykłady}}}</div>
|}}{{#if:{{{dalsze pozycje|}}}|<div>
{{{dalsze pozycje}}}</div>
|}}{{#if:{{{zmiany|}}}|<div>
{{{zmiany}}}</div>
|}}<!--
-->{{#if:{{{bez kolumn|}}}||</div></div>}}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon pomocniczy - silnik, szablonu {{s|Opis kategorii}}. Zobacz też: {{s|Opis kategorii/start}}.}}{{Kategoria|Szablony - silniki}}</noinclude>
0rwgnizilgvme3fk9bm2g5oqepdne0d
Moduł:StronicowyParser/Potrzebne
828
58155
556541
553835
2026-09-15T09:58:56Z
Persino
2851
556541
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,tekst=true,};
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 nazwa_artykulu_strony,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 klasa_tytulu='tytuł_spisu_treści';
local styl_tytulu='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;';
local styl_spisu=(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;';
local klasa_spisu='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 "");
local spis=czy_ukryte or "<ul></ul>";
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 '')..'|styl tytułu='..styl_tytulu..'|klasa tytułu='..klasa_tytulu..'|tytuł='..spis_tresci..'|klasa spisu='..klasa_spisu..'|styl spisu='..styl_spisu..'|spis='..spis..'|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(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci)
return function(tekst,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
if(not tekst)then return tekst;end;
local stronicowyparser_pomocne_modul=require("Module:StronicowyParser/Pomocne");
local tekst,tekst2=stronicowyparser_pomocne_modul.DekodowanieTekstuNazwLinku(tekst,nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,tryb,czy_nie_odstepy,drugi_wynik,czy_drugi_wynik_przetworzony)
return tekst,tekst2;
end;
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 DekodowanieTekstu=p.DekodowanieTekstu(nazwa_modulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci);
----
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=DekodowanieTekstu(pozycja_artykulu,2,nil);
parametry_ref=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,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=DekodowanieTekstu(pozycja_artykulu,2,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=DekodowanieTekstu(parametry_ref,2,nil);
naglowek_ref=DekodowanieTekstu(naglowek_ref,2,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=DekodowanieTekstu(pozycja_artykulu,2,nil);
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,3,tabela_parametrow_szablonu,tabela_nazw_spis_rzeczy);
local dodatek=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);
-----
local strona_wolumin;
local nazwa=p.SpisRzeczySzablon(nazwa_szablonu,2,tabela_parametrow_szablonu,tabela_nazw_sekcja_referencyjna,true);
if(strona)then
strona,strona_wolumin=DekodowanieTekstu(strona,nazwa and 2 or 3,nil,(not nazwa) and true or nil);
end;
podstrona=podstrona and DekodowanieTekstu(podstrona,2,nil) or podstrona;
----
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,strona_wolumin);
----
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,(((strona)and(not nazwa)) and true or nil);
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,nil,strona_wolumin);
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),(((strona)and(not nazwa)) and true or nil);
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;
jgpldgavvcl1l03hh9qjyrxufw39cbj
Wikipedysta:Persino/Gadget-Vector-2022.css/main.css
2
58973
556529
556229
2026-09-15T08:38:49Z
Persino
2851
556529
css
text/css
/* Kod CSS skórki vector-2022 na WIKI (ustawienia własne vector) */
body:not(.action-edit):not(.action-submit) #mw-content-text .mw-parser-output,
body.action-submit #wikiPreview,
.mw-footer-container{
word-wrap: break-word;
/*word-break: break-word;*/
}
.mw-content-container,
.vector-sticky-header,
.vector-page-toolbar-container{
max-width: unset !important;
}
.mw-header{
padding-top:4px;
padding-bottom:4px;
}
.vector-header-container{
box-sizing:border-box;
width: -moz-available !important;
width: -webkit-fill-available !important;
width: stretch !important;
}
html.vector-feature-page-tools-pinned-enabled > body.ns-special .vector-page-toolbar-container{
margin-top:-2px;
}
.vector-pinnable-element{
padding-top:3px;
}
.vector-dropdown .vector-dropdown-content{
padding-top: 6px;
margin-top: 7px;
}
.vector-header-container{
padding-left:20px;
padding-right:20px;
max-width:none;
border-bottom: 1px solid #eaecf0;
margin-bottom:4px;
max-width:100%;
min-width:auto;
box-sizing:border-box;
}
.vector-pinned-container{
margin-bottom:0;
padding-right:2px !important;
padding-top:2px;
}
#vector-page-tools-pinned-container.vector-pinned-container{
margin-bottom:0;
padding-right:8px !important;
}
.mw-logo{
min-width:auto;
}
@media screen and (max-width: 999px){
.mw-header.vector-header-search-toggled .vector-search-box{
margin-left:0;
}
.cdx-typeahead-search--show-thumbnail.cdx-typeahead-search--auto-expand-width:not(.cdx-typeahead-search--expanded){
margin-left:0;
}
}
@media screen and (max-width: 390px){
.mw-logo{
display:none;
}
}
@media screen and (max-width: 454px){
.cdx-text-input__input{
min-width:auto;
}
}
@media screen and (min-width: 999px) {
.client-js.vector-sticky-header-enabled{
scroll-padding-top: 50px;
}
}
.mw-page-container{
max-width:100vw;
width:100%;
box-sizing:border-box;
display:flex;
flex-direction:row;
min-height:calc( 100% - 3.125rem - 1px - 4px - 8px );
box-sizing:border-box;
background-image: url("//upload.wikimedia.org/wikipedia/commons/thumb/0/05/Wikibooksfirehazard2.svg/200px-Wikibooksfirehazard2.svg.png");
background-color:transparent;
background-attachment:fixed;
margin-left:0;
margin-right:0;
}
.vector-feature-limited-width-clientpref-0 .mw-page-container{
background-color:white;
}
.vector-feature-limited-width-clientpref-1 .mw-page-container{
background-color:cornflowerblue;
}
@media all and (max-width:999px){
.mw-page-container{
background-image:none;
}
}
html.vector-feature-limited-width-clientpref-0 > body > .mw-page-container,
html.vector-is-page-available > body > .mw-page-container{
background-image:none;
}
@media all and (max-width:476px){
.mw-page-container{
min-height:calc( 100% - 6.75rem - 1px - 4px - 8px );
width:100% !important;
}
}
@media all and (max-width:999px){
.mw-page-container{
width:100% !important;
}
}
.mw-page-container > .mw-page-container-inner{
background-color:white;
padding-left: 5px;
padding-right: 5px;
}
.mw-page-container > .mw-page-container-inner{
max-width:100vw;
margin:auto;
margin-top:0;
}
.vector-main-menu-container, .mw-content-container{
margin-top:2px;
}
@media all and (min-width:999px){
.mw-page-container > .mw-page-container-inner{
padding-left:5px;
padding-right:5px;
max-width:100%;
}
.mw-page-container > .mw-page-container-inner{
width:auto;
}
.vector-feature-limited-width-clientpref-0 #content{
width:100%;
}
.mw-page-container .mw-content-container{
display:flex;
flex-direction:column;
}
.mw-page-container .mw-content-container > #content{
height:auto;
order:1;
}
.mw-page-container .mw-content-container > #mw-data-after-content{
order:2;
}
html.client-nojs #bodyContent{
width:auto !important;
}
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header,
html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .mw-body-header{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem );
}
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem);
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header,
html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .mw-body-header{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem );
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem);
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .mw-body-header,
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .mw-body-header{
width:calc(50rem + 2 * 0.625rem + 2px );
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .mw-body-header{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem );
}
/**/
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar,
html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem );
}
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem);
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar,
html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem );
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem);
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-page-toolbar,
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-page-toolbar{
width:calc(50rem + 2 * 0.625rem + 2px );
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-page-toolbar{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem );
}
/**/
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent,
html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #bodyContent,
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent,
html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #bodyContent{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px);
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent,
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px);
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #bodyContent,
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #bodyContent{
width:calc(50rem + 2 * 0.625rem + 2px );
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #bodyContent{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem );
}
/**/
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px );
}
/**/
/**/
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem );
}
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem);
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem );
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem);
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container #footer,
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container #footer{
width:calc(50rem + 2 * 0.625rem + 2px );
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container #footer{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem );
}
/**/
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px + 15rem + 5px );
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container,
html.vector-feature-main-menu-pinned-enabled:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 15rem + 5px );
}
/**/
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-appearance-pinned-clientpref-1 body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 8.125rem );
}
html.vector-feature-appearance-pinned-clientpref-1 body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 8.125rem);
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html.vector-feature-page-tools-pinned-enabled body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px + 0.625rem + 1px + 11.875rem );
}
html.vector-feature-page-tools-pinned-enabled body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem + 0.625rem + 1px + 11.875rem);
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start:not(.vector-strona-start-toc) .mw-page-container .vector-sitenotice-container,
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body:not(.vector-strona-start) .mw-page-container .vector-sitenotice-container{
width:calc(50rem + 2 * 0.625rem + 2px );
}
html:not(.vector-feature-page-tools-pinned-enabled):not(.vector-feature-appearance-pinned-clientpref-1) body.vector-strona-start.vector-strona-start-toc.vector-strona-start-toc-prawy .mw-page-container .vector-sitenotice-container{
width:calc( 50rem + 2 * 0.625rem + 2px + 0.3 * 43.75rem + 0.3125rem );
}
/**/
.mw-footer-container{
display: flex;
flex-direction: row;
align-items: stretch;
justify-content: center;
}
}
body,
.mw-page-container,
.mw-page-container-inner,
.mw-content-container,
#content,
#bodyContent,
#mw-content-text,
.mw-parser-output,
#footer,
.vector-sitenotice-container{
max-width:-moz-available !important;
max-width:-webkit-fill-available !important;
max-width:stretch !important;
}
body.ns-10:not(.ns-submit) .mw-body-header,
body.ns-828:not(.ns-submit) .vector-sitenotice-container,
body.vector-page-css.ns-8 .mw-body-header,
body.vector-page-js.ns-8 .mw-body-header,
body.vector-page-css.ns-2 .mw-body-header,
body.vector-page-js.ns-2 .mw-body-header,
body.ns-10:not(.ns-submit) .vector-sitenotice-container,
body.ns-828:not(.ns-submit) .vector-sitenotice-container,
body.vector-page-css.ns-8 .vector-sitenotice-container,
body.vector-page-js.ns-8 .vector-sitenotice-container,
body.vector-page-css.ns-2 .vector-sitenotice-container,
body.vector-page-js.ns-2 .vector-sitenotice-container,
body.ns-10:not(.ns-submit) .vector-page-toolbar,
body.ns-828:not(.ns-submit) .vector-page-toolbar,
body.vector-page-css.ns-8 .vector-page-toolbar,
body.vector-page-js.ns-8 .vector-page-toolbar,
body.vector-page-css.ns-2 .vector-page-toolbar,
body.vector-page-js.ns-2 .vector-page-toolbar,
body.ns-10:not(.ns-submit) #bodyContent,
body.ns-828:not(.ns-submit) #bodyContent,
body.vector-page-css.ns-8 #bodyContent,
body.vector-page-js.ns-8 #bodyContent,
body.vector-page-css.ns-2 #bodyContent,
body.vector-page-js.ns-2 #bodyContent,
body.ns-10:not(.ns-submit) #footer,
body.ns-828:not(.ns-submit) #footer,
body.vector-page-css.ns-8 #footer,
body.vector-page-js.ns-8 #footer,
body.vector-page-css.ns-2 #footer,
body.vector-page-js.ns-2 #footer{
width:100% !important;
}
@media all and (min-width:745px){
body.ns-10:not(.ns-submit) .mw-page-container > .mw-page-container-inner,
body.ns-828:not(.ns-submit) .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-10 .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-828 .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-2.vector-page-css .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-8.vector-page-css .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-2.vector-page-js .mw-page-container > .mw-page-container-inner,
body.ns-10.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner,
body.ns-828.ns-submit.ns-submit-8.vector-page-js .mw-page-container > .mw-page-container-inner,
body.vector-page-css.ns-8 .mw-page-container > .mw-page-container-inner,
body.vector-page-js.ns-8 .mw-page-container > .mw-page-container-inner,
body.vector-page-css.ns-2 .mw-page-container > .mw-page-container-inner,
body.vector-page-js.ns-2 .mw-page-container > .mw-page-container-inner,
body.ns-10 .mw-page-container > .mw-page-container-inner,
html.client-nojs{
width:100%;
order:2;
}
}
html.vector-feature-limited-width-clientpref-0 .mw-body-header,
html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar,
html.vector-feature-limited-width-clientpref-0 .vector-sitenotice-container,
html.vector-feature-limited-width-clientpref-0 #bodyContent,
html.vector-feature-limited-width-clientpref-0 #footer,
html.vector-feature-limited-width-clientpref-0 .vector-page-toolbar,
html.client-nojs .mw-page-container > .mw-page-container-inner .mw-body-header,
html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar,
html.client-nojs .mw-page-container > .mw-page-container-inner .vector-sitenotice-container,
html.client-nojs .mw-page-container > .mw-page-container-inner #bodyContent,
html.client-nojs .mw-page-container > .mw-page-container-inner #footer,
html.client-nojs .mw-page-container > .mw-page-container-inner .vector-page-toolbar,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .mw-body-header,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-sitenotice-container,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #bodyContent,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner #footer,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner .vector-page-toolbar{
width:100% !important;
}
html.vector-feature-limited-width-clientpref-0 .mw-page-container > .mw-page-container-inner,
html.client-nojs .mw-page-container > .mw-page-container-inner,
html.client-js.vector-is-page-available .mw-page-container > .mw-page-container-inner{
max-width:100vw;
width:100%;
overflow:auto;
}
#bodyContent,
#content{
box-sizing:border-box;
}
.vector-feature-main-menu-pinned-disabled.vector-toc-not-available .mw-page-container-inner,
.vector-feature-main-menu-pinned-disabled.vector-feature-toc-pinned-clientpref-0 .mw-page-container-inner{
grid-template-columns: minmax(0,1fr);
}
body{
background-color:white;
}
.mw-footer-container{
padding: 7px 0 2px 0;
}
.mw-footer-container > .mw-footer{
padding:10px 5px;
}
.mw-page-container{
padding-right:0;
padding-left:0;
box-sizing:border-box;
min-width:auto;
}
@media all and (min-width: 1000px){
.mw-body{
grid-template: min-content min-content min-content 1fr / minmax(0,1fr) auto;
grid-template-areas:
'titlebar titlebar'
'toolbar toolbar'
'content columnEnd'
'.. columnEnd';
column-gap:0 !important;
width:100%;
box-sizing:border-box;
}
}
.mw-page-container-inner{
grid-template-columns: 15rem minmax(0,1fr);
column-gap: 5px;
}
html.vector-column-end .vector-appearance-landmark{
max-width:11.875rem;
}
html.client-nojs.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{
display:none;
}
html.client-js.vector-feature-appearance-pinned-clientpref-1:not(.vector-feature-page-tools-pinned-enabled) .vector-column-end{
width:8.125rem !important;
}
html.client-js.vector-feature-page-tools-pinned-enabled.vector-feature-appearance-pinned-clientpref-0 .vector-column-end{
width:11.875rem;
}
html.client-nojs.vector-feature-page-tools-pinned-enabled .vector-column-end,
html.client-js.vector-feature-appearance-pinned-clientpref-1.vector-feature-page-tools-pinned-enabled .vector-column-end{
width:11.875rem;
}
.vector-sticky-pinned-container{
padding-bottom:5px;
}
.vector-sticky-pinned-container::after{
display:none;
}
.vector-sticky-pinned-container{
top:0;
}
.client-js.vector-sticky-header-enabled body:not(.vector-sticky-header-visible) .vector-sticky-pinned-container{
top: 0 !important;
max-height:calc( 100vh - 3px );
}
.client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-sticky-pinned-container{
top: 3.2rem !important;
max-height: calc(100vh - 3.2rem - 5px);
}
.client-js.vector-sticky-header-enabled body.vector-sticky-header-visible .vector-column-start .vector-sticky-pinned-container{
top: 3.5rem !important;
}
#siteNotice{
margin:unset;
}
#centralNotice:not(:empty){
margin: 5px 0 8px 0;
}
#centralNotice:not(:empty) > div:first-of-type{
margin-top:5px;
}
#centralNotice:not(:empty) > div:last-of-type{
margin-bottom:8px;
}
.mw-indicators{
white-space:nowrap;
font-size: 0.875rem;
line-height: 1.4;
}
.mw-indicators .mw-parser-output{
font-size: 1.0em;
line-height: 1.4;
}
.vector-page-titlebar-blank .mw-indicators{
display:none;
}
.mw-body-header{
position:relative;
height:2.6rem;
box-sizing:border-box;
}
.mw-body-header > .firstHeading:not(:hover){
height:100%;
box-sizing:border-box
}
body .firstHeading:not(:hover) > .plainlinks,
body:not(.action-view) .firstHeading:not(:hover) > .plainlinks{
display:none;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
body .firstHeading > .plainlinks,
body:not(.action-view) .firstHeading > .plainlinks{
text-shadow:none;
}
.mw-body h1.firstHeading{
font-size: 1.6rem;
line-height: 1.4;
}
body.action-view:not(.ns-special) .firstHeading{
min-height:100%;
box-sizing:border-box;
overflow:hidden;
}
body.action-view:not(.ns-special) .firstHeading:not(:hover){
height:100%;
}
body.action-view:not(.ns-special) .firstHeading:not(:hover){
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
border-bottom:0;
padding-top:6px;
margin-right:7px;
}
body:not(.ns-0).action-view:not(.ns-special) .mw-body-header:not(.vector-page-titlebar-blank) .firstHeading:not(:hover){
display:block !important;
}
body:not(.ns-0).action-view:not(.ns-special) .mw-body-header.vector-page-titlebar-blank .firstHeading:not(:hover){
display:none !important;
}
html.vector-feature-limited-width-content-enabled body.ns-0.action-view:not(.ns-special) .firstHeading:not(:hover){
display:flex;
flex-direction:row;
justify-content:flex-start;
}
body:not(.action-view) .firstHeading:not(:hover),
body.action-view.ns-special .firstHeading:not(:hover),
html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:not(:hover){
display:block;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
border-bottom:0;
padding-top:6px;
}
body:not(.action-view) firstHeading:first-child:not(:hover),
body.action-view.ns-special firstHeading:first-child:not(:hover),
html.vector-feature-limited-width-content-disabled body.action-view .firstHeading:first-child:not(:hover){
margin-left:0;
}
html.vector-feature-toc-pinned-clientpref-0 body:not(.action-view) .firstHeading:not(:first-child):not(:hover),
html.vector-feature-toc-pinned-clientpref-0 body.action-view.ns-special .firstHeading:not(:first-child):not(:hover),
html.vector-feature-toc-pinned-clientpref-0 body.action-view .firstHeading:not(:first-child):not(:hover){
margin-left:5px;
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body:not(.action-view) .firstHeading:not(:first-child):not(:hover),
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view.ns-special .firstHeading:not(:first-child):not(:hover),
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available body.action-view .firstHeading:not(:first-child):not(:hover){
margin-left:0;
}
body.ns-0 .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type,
body.ns-0:not(.action-view) .firstHeading:not(:hover) > div:not(.plainlinks):first-of-type{
order:4;
}
body.ns-0 .firstHeading:not(:hover) > #firstHeadingTitle,
body.ns-0:not(.action-view) .firstHeading:not(:hover) > #firstHeadingTitle{
order:5;
}
body.ns-0 .firstHeading:not(:hover) > .mw-page-title-main,
body.ns-0:not(.action-view) .firstHeading:not(:hover) > .mw-page-title-main{
order:3;
}
body.ns-0 .firstHeading:not(:hover) > #mw-article-numbering,
body.ns-0:not(.action-view) .firstHeading:not(:hover) > #mw-article-numbering{
order:1;
}
body.ns-0 .firstHeading:not(:hover) > *[lang],
body.ns-0:not(.action-view) .firstHeading:not(:hover) > *[lang]{
order:2;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
}
body.ns-0 .firstHeading > .mw-editsection{
height:1.2em;
line-height:3.8;
}
body.ns-0 .firstHeading:not(:hover) > .mw-editsection{
order:4;
}
body .firstHeading:hover{
display:block;
border:1px solid #eaecf0;
border-radius:10px;
background-color:white;
position:absolute;
top:0;
/*left:-6px;*/
width:auto;
padding:5px;
z-index:2;
}
.firstHeading:first-child:hover{
left:-6px;
}
html.vector-feature-toc-pinned-clientpref-0 .firstHeading:not(:first-child):hover{
left:1.4375rem;
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .firstHeading:not(:first-child):hover{
left:-6px;
}
header.mw-body-header{
justify-content:space-between;
width:100%;
box-sizing:border-box;
}
#vector-main-menu > div.vector-pinnable-header{
margin-left:5px;
}
body .firstHeading:hover{
word-wrap:break-word;
hyphens:auto;
width:auto;
}
html.vector-feature-limited-width-content-enabled body.ns-0.action-view .firstHeading:hover{
display:grid !important;
justify-content:start;
grid-template-columns:auto auto auto auto minmax(auto,1fr);
}
body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child{
grid-row-start:1;
grid-row-end:2;
grid-column-start:1;
grid-column-end:2;
width:auto;
}
body.ns-0.action-view .firstHeading:hover > :not(#mw-article-numbering):first-child,
body.ns-0.action-view .firstHeading:hover > #mw-article-numbering:first-child + *{
grid-row-start:1;
grid-row-end:2;
grid-column-start:3;
grid-column-end:4;
width:auto;
}
body.ns-0.action-view .firstHeading:hover > .mw-page-title-main{
grid-row-start:1;
grid-row-end:2;
grid-column-start:2;
grid-column-end:3;
width:auto;
}
body.ns-0.action-view .firstHeading:hover > .mw-editsection{
grid-row-start:1;
grid-row-end:2;
grid-column-start:4;
grid-column-end:5;
width:auto;
}
body.ns-0.action-view .firstHeading:hover > .plainlinks{
grid-row-start:auto;
grid-row-end:auto;
grid-column-start:1;
grid-column-end:6;
width:auto;
}
body.action-view .firstHeading:hover{
display:block !important;
}
.mw-body-header > .mw-indicators{
order:3;
margin-top:auto;
margin-bottom:3px;
}
.mw-body-header::before{
content:'';
display:block;
order:3;
width:auto;
flex:auto 1 1;
}
.mw-body-header > .vector-toc-landmark{
width:1.5rem;
height:2.125rem;
}
.mw-body-header > .vector-toc-landmark{
order:1;
}
html.vector-feature-toc-pinned-clientpref-0 .vector-toc-landmark{
margin-right:0;
}
.mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover){
order:2;
}
.mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #ca-addsection{
order:3;
}
.mw-body-header > .vector-toc-landmark ~ #firstHeading:not(:hover) ~ #p-lang-btn{
order:4;
}
.mw-body-header > .vector-toc-landmark ~ #firstHeading:hover ~ #p-lang-btn{
order:3;
}
/**/
.mw-body-header > #firstHeading:first-child:not(:hover){
order:2;
}
.mw-body-header > #firstHeading:first-child:not(:hover) ~ #ca-addsection{
order:3;
}
.mw-body-header > #firstHeading:first-child:not(:hover) ~ #p-lang-btn{
order:4;
}
.mw-body-header > #firstHeading:first-child:hover ~ #ca-addsection{
order:3;
}
.mw-body-header > #firstHeading:first-child:hover ~ #p-lang-btn{
order:4;
}
#ca-addsection{
margin-left:0;
margin-right:0;
}
.vector-page-titlebar{
flex-wrap:nowrap;
}
/**/
.vector-page-titlebar .vector-page-titlebar-toc .vector-menu-heading{
padding:0.3125em !important;
}
#vector-page-titlebar-toc-label{
height: 2.125rem;
max-width: 28rem;
min-height:unset;
}
.vector-toc-landmark{
margin-top:auto;
margin-bottom:0;
}
.mw-body-header .mw-portlet-lang{
margin-right:0;
}
#vector-page-titlebar-toc-checkbox{
display:none;
}
body .firstHeading:hover > .plainlinks,
body:not(.action-view) .firstHeading:hover > .plainlinks{
display:block;
}
#mw-panel{
border-radius: 10px;
border: 1px solid #c8ccd1;
padding: 5px;
}
/**/
#mw-panel .vector-menu-heading:not(.mw-menu-inactive),
#vector-main-menu-pinned-container .vector-menu-heading:not(.mw-menu-inactive),
#vector-main-menu-unpinned-container .vector-menu-heading:not(.mw-menu-inactive),
#vector-page-tools-pinned-container .vector-menu-heading:not(.mw-menu-inactive),
#vector-page-tools-unpinned-container .vector-menu-heading:not(.mw-menu-inactive){
background-color:whitesmoke;
}
#mw-panel .mw-menu-inactive,
#vector-main-menu-pinned-container .mw-menu-inactive,
#vector-main-menu-unpinned-container .mw-menu-inactive,
#vector-page-tools-pinned-container .mw-menu-inactive,
#vector-page-tools-unpinned-container .mw-menu-inactive{
background-color:lightsteelblue;
color:white;
}
#mw-panel .vector-menu-heading,
#vector-main-menu-pinned-container .vector-menu-heading,
#vector-main-menu-unpinned-container .vector-menu-heading,
#vector-page-tools-pinned-container .vector-menu-heading,
#vector-page-tools-unpinned-container .vector-menu-heading{
padding-left:5px !important;
padding-right:5px !important;
margin-left:0 !important;
display:block;
border-radius:5px;
border:1px solid #c8ccd1;
margin-top:3px;
margin-bottom:0;
}
#mw-panel .vector-menu-content:not(.mw-items-inactive),
#vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive),
#vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive),
#vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive){
display:block;
border-radius:5px;
border:1px solid #c8ccd1;
padding: 5px;
margin-top:2px;
}
#mw-panel .vector-menu-content:not(.mw-items-inactive) > ul,
#vector-main-menu-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul,
#vector-page-tools-pinned-container .vector-menu-content:not(.mw-items-inactive) > ul,
#vector-page-tools-unpinned-container .vector-menu-content:not(.mw-items-inactive) > ul{
margin-top:0;
}
#mw-panel .mw-items-inactive,
#vector-main-menu-unpinned-container .mw-items-inactive,
#vector-page-tools-pinned-container .mw-items-inactive,
#vector-page-tools-unpinned-container .mw-items-inactive{
display:none;
}
.vector-main-menu #p-navigation .vector-menu-heading{
display:block;
}
#mw-panel .vector-main-menu-action,
#vector-main-menu-unpinned-container .vector-main-menu-action,
#vector-page-tools-pinned-container .vector-main-menu-action,
#vector-page-tools-unpinned-container .vector-main-menu-action{
display:none;
}
#mw-panel.hidden_sidebar_panel{
position:relative;
z-index:1;
}
#mw-panel.hidden_sidebar_panel > #hideSidebar_close_lpanel{
position:absolute;
right:0;
}
#mw-panel.hidden_sidebar_panel > #vector-main-menu-pinned-container{
display:none;
}
#mw-panel #vector-main-menu-pinned-container{
padding-left:0 !important;
}
#vector-main-menu-pinned-container .vector-main-menu{
margin-left:0 !important;
margin-top:0 !important;
}
#mw-data-after-content .cdx-card{
margin:5px 0;
border-radius:10px;
}
.vector-unpinned-container .vector-menu{
margin:0 5px;
}
#mw-content-text .mw-parser-output code{
position:relative;
}
.mw-parser-output pre{
margin-top:8px;
margin-bottom:8px;
background-color: #f8f9fa;
color: #000;
border: 1px solid #eaecf0;
word-wrap:break-word;
word-break:break-word;
hyphens:auto;
box-sizing:border-box;
font-size:110%;
}
.client-js .vector-search-box-vue .cdx-search-input{
position:relative;
}
.client-js .vector-search-box-vue .vector-typeahead-search .cdx-text-input__input{
border-right-color:#a2a9b1 !important;
}
.client-js .vector-search-box-vue .vector-typeahead-search .cdx-search-input__end-button{
position:absolute;
right:0;
}
html.client-js .vector-search-box-vue .vector-typeahead-search--active .cdx-search-input__end-button,
html.client-js .vector-search-box-vue .vector-typeahead-search:hover .cdx-search-input__end-button{
position:relative;
}
.mw-content-container #content{
border-radius:10px;
border:1px solid #c8ccd1;
padding:10px;
padding-top:8px;
}
body:not(.action-view):not(.ns-special) .vector-body-before-content{
float:right;
}
body.ns-special .vector-body-before-content .mw-indicators{
margin-top:6px;
float:right;
padding-top:0;
}
body:not(.ns-special) .vector-body-before-content .mw-indicators{
margin-top:2px;
float:right;
padding-top:0;
margin-bottom:0.2px;
}
.vector-body-before-content > .mw-indicators img,
.mw-body-header .mw-indicators img{
max-height:1.7em;
}
body:not(.page-Wikibooks_Strona_główna).action-view:not(.ns-special) .vector-body-before-content::after{
content:'';
display:block;
clear:both;
order:2;
}
body.action-view #bodyContent div#siteSub{
display:block !important;
}
body.action-view:not(.ns-special) .vector-body-before-content #siteSub{
display:block;
float:left;
order:1;
margin-top:5px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
font-size:0.8125rem;
line-height:1.4em;
padding-bottom:1px;
}
body.action-view:not(.ns-special) .vector-body-before-content{
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
body.action-view:not(.ns-special) .vector-body-before-content .mw-indicators{
order:3;
white-space:nowrap;
}
body.action-view:not(.ns-special) .vector-body-before-content{
border-bottom:1px solid #c8ccd1;
padding-bottom:3px;
display:flex;
flex-direction:row;
justify-content:space-between;
align-items: flex-end;
}
#mw-content-text{
margin-top:10px;
}
.catlinks{
margin-top:7px !important;
}
.mw-category-generated > :first-child > h2:first-child{
margin-top:14px;
}
body.ns-14 .mw-category-generated > p:only-child{
border:1px solid #c8ccd1;
padding:5px;
margin-top:5px;
margin-bottom:5px;
}
body.ns-14 .mw-parser-output.blank{
margin-top:-3px;
}
body.ns-14 .mw-parser-output.blank ~ .printfooter{
margin-top:3px;
}
#content::after{
content:'';
clear:both;
display:block;
}
#bodyContent{
margin-bottom:0;
box-sizing: border-box;
}
body.action-edit #bodyContent #editform{
margin-top:5px;
}
body{
font-family: Arial, Helvetica, "Free Helvetian", FreeSans, sans-serif;
font-stretch:normal;
font-variant:normal;
font-style:normal;
font-weight:normal;
font-size-adjust:none;
letter-spacing:normal;
word-spacing:normal;
text-align:left;
word-wrap:break-word;
hyphens:auto;
}
body.action-history #mw-content-text > *:first-child{
margin-top:8px;
}
.mw-parser-output hr{
font-size:1.2em;
}
#mw-content-text,
#mw-content-text .mw-message-box-warning,
#mw-content-text .mw-parser-output{
font-size: calc(0.875rem * 0.89944);
line-height: 1.4em;
}
.mw-ui-icon{
font-size:1rem;
}
body{
font-size:1rem;
line-height:1.4em;
}
/**/
body.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before,
body.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{
content:'';
clear:both;
display:block;
}
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before,
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{
margin-bottom:8px;
}
body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before,
body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{
margin-bottom:0;
}
body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after,
body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{
content:'';
clear:both;
display:block;
}
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.blank)::after,
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.blank)::after{
margin-top:3px;
}
body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after,
body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{
margin-top:0;
}
body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.blank)::before,
body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.blank)::before{
margin-bottom:0;
}
body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.blank)::after,
body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.blank)::after{
margin-top:0;
}
/**/
body.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before,
body.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{
content:'';
clear:both;
display:block;
}
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before,
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{
margin-bottom:8px;
}
body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before,
body.page-Wikibooks_Strona_główna:not(.ns-special).action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{
margin-bottom:0;
}
body.action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after,
body.action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{
content:'';
clear:both;
display:block;
}
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after,
body:not(.ns-special):not(.page-Wikibooks_Strona_główna).action-view:not(.ns-14) #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{
margin-top:3px;
}
body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after,
body.page-Wikibooks_Strona_główna.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{
margin-top:0;
}
body.ns-special.action-view #mw-content-text .mw-parser-output:first-child:not(.is-only-whitespace)::before,
body.ns-special.action-view #mw-content-text .mw-parser-output.first-child:not(.is-only-whitespace)::before{
margin-bottom:0;
}
body.ns-special.action-view #mw-content-text .mw-parser-output:last-child:not(.is-only-whitespace)::after,
body.ns-special.action-view #mw-content-text .mw-parser-output.last-child:not(.is-only-whitespace)::after{
margin-top:0;
}
/**/
body:not(.page-Wikibooks_Strona_główna) .printfooter{
display:block;
padding:5px;
border:1px solid #c8ccd1;
margin-top:6px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
clear:both;
}
.noarticletext{
margin-top:0;
margin-bottom:7px;
}
body.action-view #bodyContent #contentSub{
display:block !important;
}
#contentSub{
margin-top:5px !important;
}
#contentSub > #pwContent > #pwPathway,
#contentSub > #pwContent > #pwPathway + #pwNav,
#contentSub > #mw-content-subtitle,
#contentSub > #mw-content-subtitle > .subpages,
#contentSub2 > .subpages > .mw-undelete-subtitle{
font-size:0.75rem;
line-height:1.2em;
}
#contentSub2{
margin-top:4px !important;
}
#contentSub2 > .subpages{
border-bottom:1px solid #c8ccd1;
padding-bottom:5px;
padding-top:2px;
}
#pwContent:not(:empty){
border-bottom:1px solid #c8ccd1;
padding-bottom:3px;
font-size:100%;
}
html:not(.client-nojs) body:not(.mw-special-Watchlist) #mw-content-subtitle:not(:empty),
html.client-nojs #mw-content-subtitle:not(:empty){
border-bottom:1px solid #c8ccd1;
padding-bottom:3px;
}
#mw-content-subtitle > .subpages:not(:last-child){
border-bottom:1px solid #c8ccd1;
padding-bottom:3px;
}
#mw-content-subtitle .mw-message-box-warning:not(:last-child){
margin:10px 0;
}
#mw-content-subtitle .mw-message-box-warning:last-child{
margin:10px 0 8px 0;
}
body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{
margin-top:10px !important;
margin-bottom:10px !important;
}
#mw-content-subtitle #redirectsub,
#mw-content-subtitle .mw-redirectedfrom{
display:block;
margin: 5px 0 2px 0;
}
#mw-content-subtitle .mw-redirectedfrom:not(:last-child){
border-bottom: 1px solid #c8ccd1;
}
#mw-content-text > .mw-message-box-warning:first-child{
margin:10px 0;
}
#mw-content-text > .mw-message-box-warning{
margin:5px 0 10px 0;
}
body.action-edit #mw-content-text > .mw-editnotice:first-child{
margin-top:12px;
}
body.action-edit #mw-content-text > :not(.mw-editnotice):not(.mw-parser-output):not(.mw-message-box-warning):first-child{
margin-top:-3px;
}
body.action-view.ns-special #mw-content-text > :not(div):not(p):first-child{
margin-top:18px;
}
body:not(.action-view) #mw-content-text > p:first-child{
margin-top:3px;
}
#contentsub::after{
content:'';
display:block;
}
.previewnote, #wikiPreview.ontop{
margin-bottom:10px;
max-width:unset;
}
body.action-submit #mw-content-text > #wikiPreview > .previewnote > #mw-previewheader{
margin-top:0.8em;
margin-bottom:0.4em;
}
div.thumb.tright:first-child,
div.thumb.tleft:first-child{
margin-top:0;
}
#mw-content-text .mw-parser-output > p:first-child{
margin-top:0;
}
#mw-content-text .mw-parser-output > p:not(.br-clear-both):last-child{
margin-bottom:0;
}
#mw-content-text .mw-parser-output > :not(p).floatleft:first-child + p,
#mw-content-text .mw-parser-output > :not(p).floatright:first-child + p,
#mw-content-text .mw-parser-output > :not(p).tleft:first-child + p,
#mw-content-text .mw-parser-output > :not(p).tright:first-child + p{
margin-top:0;
}
#mw-content-text .mw-parser-output .template-documentation:first-of-type{
margin-top:0;
box-sizing:border-box;
}
#mw-content-text .mw-parser-output > :not(style):not(link) ~ .template-documentation{
margin-top:10px !important;
box-sizing:border-box !important;
}
#mw-content-text .mw-parser-output #documentation-meta-data:not(:last-child){
margin-top:3px !important;
margin-bottom:3px !important;
}
#mw-content-text .mw-parser-output #documentation-meta-data:last-child{
margin-top:3px !important;
margin-bottom:0 !important;
}
body.ns-14 .mw-category-generated > * > .mw-content-ltr > .mw-category > .mw-category-group > h3.only-whitespace.is-only-whitespace::before{
display:block;
content:'(pusta)';
float:left;
}
.vector-body{
font-size: calc(1rem * 0.875);
line-height: 1.5em;
}
@media all and (min-width:999px){
html.vector-feature-page-tools-pinned-enabled #bodyContent.vector-body,
html.vector-feature-appearance-pinned-clientpref-1 #bodyContent.vector-body{
border-right: 1px solid #c8ccd1;
border-bottom:1px solid #c8ccd1;
padding-right:0.625rem;
padding-bottom:0.625rem;
}
}
.vector-toc .vector-toc-list-item a{
font-size:0.8125rem;
line-height:1.4em;
}
.wb-langlinks-link > a::before{
margin-left:-8px;
}
/**/
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover,
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover,
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover{
display:block;
outline:1px solid #eaecf0;
border-radius:10px;
box-sizing:border-box;
width:100%;
}
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{
background-color:blue !important;
}
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a:active:hover,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:active:hover,
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:active:hover{
background-color:green !important;
}
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a:hover,
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a:hover,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a:hover{
color:white !important;
}
.vector-pinned-container .vector-toc ul.vector-toc-contents li > a,
.vector-unpinned-container .vector-toc ul.vector-toc-contents li > a,
.vector-pinned-container .vector-menu ul.vector-menu-content-list li > a,
.vector-unpinned-container .vector-menu ul.vector-menu-content-list li > a{
display:block;
width:100%;
text-decoration:none;
font-size: 0.8125rem;
line-height:1.4em;
box-sizing:border-box;
padding:0 5px !important;
}
.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{
margin-top:0;
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-main-menu-container{
margin-bottom:5px;
}
.vector-column-start .vector-main-menu-container,
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available .vector-column-start .vector-sticky-pinned-container{
margin-left:12px;
}
@media (min-width: 999px){
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{
border-radius:10px;
border:1px solid #c8ccd1;
padding:8px;
padding-left:6px;
}
}
#mw-panel-toc-list{
margin-top:6px;
}
#vector-toc-pinned-container .vector-toc::after{
display:none;
}
.vector-toc .vector-toc-text{
padding: 3px 0 !important;
}
button.cdx-button{
z-index:1;
}
.vector-menu-tabs .mw-list-item.vector-tab-noicon > a, .vector-page-toolbar-container .vector-dropdown.vector-tab-noicon > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{
padding-bottom:3px;
margin-bottom:0;
}
.vector-menu-tabs .mw-list-item > a, .vector-page-toolbar-container .vector-dropdown > a, .vector-menu-tabs .mw-list-item .vector-dropdown-label, .vector-page-toolbar-container .vector-dropdown .vector-dropdown-label{
max-height:37px;
line-height:1.4em;
}
.mw-diff-table-prefix{
max-width:calc( 100% - 2em );
}
.vector-column-start{
border-top:0;
margin-top:0;
}
html.vector-feature-page-tools-pinned-enabled .vector-column-end,
html.vector-feature-appearance-pinned-clientpref-1 .vector-column-end{
margin-top:0;
margin-left:-1px;
border: 1px solid #c8ccd1;
border-top:0;
padding-top:2px;
}
.vector-column-start .vector-sticky-pinned-container{
margin-left:0;
}
.vector-header-container .mw-header{
max-width:none;
min-width:auto;
}
.vector-header-container{
padding-left:0;
padding-right:0;
}
.vector-header-container .mw-header{
padding-left:1.5rem;
padding-right:1.5rem;
}
.client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc{
margin-right:0;
}
html.vector-feature-toc-pinned-clientpref-1.vector-toc-available #vector-toc-pinned-container{
padding-left:15px;
}
.vector-pinned-container{
padding: 16px 8px;
padding-top:5px;
padding-bottom:0;
}
.vector-dropdown .vector-dropdown-content{
padding-right:4px;
padding-bottom:0;
/*width:800px;*/
}
.vector-dropdown#vector-page-titlebar-toc .vector-dropdown-content{
padding-left:12px
}
.vector-dropdown#vector-page-tools-dropdown .vector-dropdown-content{
padding-left:4px;
padding-bottom:8px;
}
.vector-dropdown#vector-main-menu-dropdown .vector-dropdown-content{
padding-left:4px;
}
.client-js.vector-feature-toc-pinned-clientpref-0 body:not(.vector-sticky-header-visible) .vector-page-titlebar-toc .vector-dropdown-content{
/*max-width:200px;*/
}
.mw-header{
grid-template: auto / 15em minmax(0,1fr);
grid-template-areas:'headerStart headerEnd';
}
#p-navigation.mw-portlet-navigation{
margin-top:0px;
}
.vector-menu.mw-portlet:not(.mw-portlet-navigation){
margin-top:4px;
}
.vector-toc .vector-toc-list-item-active > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-level-1-active:not(.vector-toc-list-item-expanded) > .vector-toc-link .vector-toc-text, .vector-toc .vector-toc-list-item-active.vector-toc-level-1-active > .vector-toc-link .vector-toc-text{
width:unset !important;
}
@media not screen{
}
html.vector-feature-custom-font-size-clientpref-0{
font-size:14px;
}
html.vector-feature-custom-font-size-clientpref-1{
font-size:16px;
}
html.vector-feature-custom-font-size-clientpref-2{
font-size:18px;
}
.oo-ui-buttonElement {
vertical-align: text-top;
}
blw8h0tycyd40jgmx6mtoxgcdo2mh01
Szablon:Tabela nawigacyjna/styles.css
10
59605
556461
553247
2026-09-15T03:17:54Z
Persino
2851
556461
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
display:block;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
10q0zr4xcq7yvl934gqms46ck41h6ic
556462
556461
2026-09-15T03:19:06Z
Persino
2851
556462
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
display:block;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.2em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
32autvvuk615bwsbrsr5fdl3j37rc10
556463
556462
2026-09-15T03:20:05Z
Persino
2851
556463
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
display:block;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
gkzn8h1fr6zptna998s4w9mjb94ohwc
556471
556463
2026-09-15T03:44:36Z
Persino
2851
556471
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
4zebzhd037nv9pl3wx9af8f6tl61xdw
556473
556471
2026-09-15T03:51:23Z
Persino
2851
556473
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
0q6f5b4ejjat4s64x8ma8s63gz6kvk2
556474
556473
2026-09-15T03:52:49Z
Persino
2851
556474
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
mdv5thtxdwnferglc7slu7n672sd92z
556537
556474
2026-09-15T09:34:51Z
Persino
2851
556537
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
euiy6vtvi5xvyc8mvg3xbeci3kdqn9x
556542
556537
2026-09-15T10:02:18Z
Persino
2851
556542
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div{
padding:0.5em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
7vvnm0up3378q76fc277dtpn7wwlwbx
556543
556542
2026-09-15T10:06:03Z
Persino
2851
556543
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div{
padding:0.5em;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
rrx56evszx8vuhzv8nb1n84jjb3gg5f
556544
556543
2026-09-15T10:13:38Z
Persino
2851
556544
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div{
padding:0.5em;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{
margin:0;
margin-left:1em;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
811lf8wcisw54vnpezedrjybkw12fc0
556545
556544
2026-09-15T10:16:14Z
Persino
2851
556545
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div{
padding:0.5em;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{
margin-left:1em;
margin-right:0;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
cot0c822zt2u75s8z7n6bldvpeianr7
556546
556545
2026-09-15T10:19:44Z
Persino
2851
556546
sanitized-css
text/css
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr,
table.tabela_nawigacyjna > tbody > tr > th,
table.tabela_nawigacyjna > tbody > tr > td{
width:100%;
max-width:100%;
box-sizing:border-box;
}
table.tabela_nawigacyjna{
width:auto;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna > tbody,
table.tabela_nawigacyjna > tbody > tr{
border:0;
}
table.tabela_nawigacyjna > tbody > tr:first-child > th > div.tabela_nawigacyjna-tytuł,
table.tabela_nawigacyjna > tbody > tr:first-child > td > div.tabela_nawigacyjna-tytuł{
box-sizing:border-box;
width:calc( 100% - 6em );
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
padding:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div{
padding:0.5em;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th,
table.tabela_nawigacyjna > tbody > tr:last-child > td{
border-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > th > div > p:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > p:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:first-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:first-child{
margin-top:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul:last-child,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol:last-child{
margin-bottom:0;
}
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ul,
table.tabela_nawigacyjna > tbody > tr:last-child > td > div > ol{
margin-left:0;
margin-right:0;
list-style-position: inside;
margin-inline-start: 0;
}
table.tabela_nawigacyjna.szerokość{
display:flex;
flex-direction:row;
width:auto;
margin-left:0;
margin-right:0;
margin-top:0.2em;
margin-bottom:0;
}
table.tabela_nawigacyjna,
table.tabela_nawigacyjna *{
word-wrap:break-word;
word-break:break-word;
}
table.tabela_nawigacyjna.szerokość > tbody{
display:table;
}
table.tabela_nawigacyjna.szerokość > tbody,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
table.tabela_nawigacyjna.szerokość > tbody > tr,
hr + table.tabela_nawigacyjna,
hr + style + table.tabela_nawigacyjna,
hr + link + table.tabela_nawigacyjna{
margin-top:0;
}
table.tabela_nawigacyjna:last-child{
margin-bottom:0;
}
@media all and (min-width:745px) and (min-device-width: 745px) and (min-device-height: 745px){
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child ~ tr{
animation: nie_hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:hover ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible.collapsed > tbody > tr:first-child:not(:hover) ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child ~ tr{
animation: hover_odkrywca 0s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:hover ~ tr{
animation: nie_hover_odkrywca 5s forwards;
}
html.client-nojs table.collapsible:not(.collapsed) > tbody > tr:first-child:not(:hover) ~ tr{
animation: hover_odkrywca 0s forwards;
}
}
@keyframes hover_odkrywca {
0% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
99% {
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
100%{
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
}
@keyframes nie_hover_odkrywca {
0% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
99% {
opacity:1;
visibility:visible;
height:auto;
overflow:visible;
position:relative;
}
100%{
opacity:0;
visibility:hidden;
height:0;
overflow:hidden;
position:absolute;
}
}
/*{{Kategoria|Szablony - arkusze stylów}}*/
esf4ttgim7hak5e24ro7sbmf7yd0niv
Wikibooks:Tablica ogłoszeń/Archiwum
4
60008
556464
552170
2026-09-15T03:25:55Z
Persino
2851
556464
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
-->
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}
6lojc60ul6o1fl3cpf3e6mvwdo0lf71
556465
556464
2026-09-15T03:30:02Z
Persino
2851
556465
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
-->{{Div start}}
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}
{{Div koniec}}
2yruqa4gyrhm53w3ssne7141sdnjjp4
556467
556465
2026-09-15T03:35:33Z
Persino
2851
556467
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
--> {{Tabela nawigacyjna
| styl = width:100%;margin-left:0;margin-right:0;box-sizing:border-box;
| funkcja = PokazanaWikitabelowaListaMenu
| tytuł = Spis - Archiwum ogłoszeń
| spis =
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}
}}
5ps4v7f68hctkf4y9v61wolgpumgjr6
556468
556467
2026-09-15T03:37:06Z
Persino
2851
556468
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
--> {{Tabela nawigacyjna
| klasa = szerokość
| funkcja = PokazanaWikitabelowaListaMenu
| tytuł = Spis - Archiwum ogłoszeń
| spis =
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}
}}
7io6jne3y9q2wf5ugaqnfvmvhokzosp
556534
556468
2026-09-15T09:27:55Z
Persino
2851
556534
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
--> {{Tabela nawigacyjna
| klasa = szerokość
| funkcja = PokazanaWikitabelowaListaMenu
| tytuł = Spis - Archiwum ogłoszeń
| spis =
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}}}
a9z5k7ani0wijiwax51wk2w626pjdok
556538
556534
2026-09-15T09:35:36Z
Persino
2851
556538
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
--> {{Tabela nawigacyjna
| klasa = szerokość
| funkcja = PokazanaWikitabelowaListaMenu
| tytuł = Spis - Archiwum ogłoszeń
| spis = {{Span|
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}}}
}}
rls8t1w2725j1n42tqohf6hhhe0xabr
556539
556538
2026-09-15T09:39:24Z
Persino
2851
556539
wikitext
text/x-wiki
{{#switch: {{FULLPAGENAME}}
| {{Ns:Project}}:Tablica ogłoszeń =
| {{Ns:Project}}:Tablica ogłoszeń/Nagłówek = {{Kategoria|Metastrony Wikibooks}}
| {{Ns:Project}}:Tablica ogłoszeń/Archiwum = <!--
-->{{Ombox|typ=zawartość|Strona zbiorcza archiwum ogłoszeń dla użytkowników {{NS|w=tak|l=tak}}. {{Br}}Moduł edytuj, jeżeli to jest konieczne, lub po dodaniu nowego archiwum z nowszej wersji {{lr|Tablica ogłoszeń|tablicy ogłoszeń}}.}}{{Hr}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń|sortuj spacją=tak}}<!--
-->|#default={{Archiwum|edytuj sekcje={{{edytuj sekcje|}}}}}<!--
-->{{Kategoria|Archiwa Wikibooks - Tablica ogłoszeń}}<!--
-->}}<!--
--> {{Tabela nawigacyjna
| klasa = szerokość
| funkcja = PokazanaWikitabelowaListaMenu
| tytuł = Spis - Archiwum ogłoszeń
| spis = {{P|
{{lr|Tablica ogłoszeń/Archiwum|Archiwum}}:
{{sr|2006|p=Archiwum}} ~
{{sr|2007|p=Archiwum}} ~
{{sr|2008|p=Archiwum}} ~
{{sr|2009|p=Archiwum}} ~
{{sr|2010|p=Archiwum}} ~
{{sr|2011|p=Archiwum}} ~
{{sr|2012|p=Archiwum}} ~
{{sr|2013|p=Archiwum}} ~
{{sr|2014|p=Archiwum}} ~
{{sr|2015|p=Archiwum}} ~
{{sr|2016|p=Archiwum}} ~
{{sr|2017|p=Archiwum}} ~
{{sr|2018|p=Archiwum}} ~
{{sr|2019|p=Archiwum}} ~
{{sr|2020|p=Archiwum}} ~
{{sr|2021|p=Archiwum}} ~
{{sr|2022|p=Archiwum}} ~
{{sr|2023|p=Archiwum}} ~
{{sr|2024|p=Archiwum}} ~
{{sr|2025|p=Archiwum}}
}}}}
2jjs2nhsgi1ksk1ef3op3snxwkcfsew
Szablon:NawigacjaSpecjalna/Nawigacja/Pomoc:Spis treści
10
61114
556456
554753
2026-09-15T02:48:16Z
Persino
2851
556456
wikitext
text/x-wiki
<includeonly>{{Układ autonawigacji|krok={{{1}}}
|automat manualny=tak
|spis treści=Pomoc:Spis treści
|Pomoc:Spis treści|Pomoc - Spis treści
|Pomoc:Spis treści/Wstęp|Wstęp
|Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy
|Wikibooks:Zasady i wskazówki|Zasady i wskazówki
|Wikibooks:Szybka pomoc|Szybka pomoc
|Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks?
|Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks
|Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę?
|Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników?
|Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks?
|Wikibooks:Wikietykieta|Wikietykieta
|Pomoc:Wikietykieta|Wikietykieta
|Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia
|Pomoc:Żargon użytkowników|Żargon użytkowników
|Wikibooks:Informacje prawne|Informacje prawne
|Wikibooks:Prawa autorskie|Prawa autorskie
|Pomoc:Spis treści/Edycja|Edycja
|Wikibooks:Brudnopis|Brudnopis
|Pomoc:Edycja kodu|Edycja kodu
|Wikibooks:Import stron|Import stron
|Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek
|Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks
|Pomoc:Jak edytować artykuły|Jak edytować artykuły?
|Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów
|Pomoc:Podświetlanie składni|Podświetlanie składni
|Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami
|Pomoc:Quiz|Quiz
|Pomoc:Tworzenie podręcznika|Tworzenie podręcznika
|Wikibooks:Wandalizm|Wandalizm
|Wikibooks:Podręczniki do druku|Podręczniki do druku
|Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku
|Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF
|Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex
|Pomoc:Książki|Książki
|Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca
|Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie
|Wikibooks:Wkład miesiąca/Wstęp|Wstęp
|Wikibooks:Wkład miesiąca/Regulamin|Regulamin
|Wikibooks:Wkład miesiąca/Nominacje|Nominacje
|Pomoc:Spis treści/Komunikacja|Komunikacja
|Wikibooks:Kanał IRC|Kanał IRC
|Wikibooks:Kontakt|Kontakt
|Wikibooks:Portal użytkowników|Portal użytkowników
|Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji
|Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne
|Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks
|Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks?
|Wikibooks:Księgozbiór|Księgozbiór
|Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane
|Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie
|Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie
|Kategoria:Kategorie podręcznikowe|Księgozbiór - Kategorie podręcznikowe
|Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom
|Wikibooks:Księgozbiór/Status|Księgozbiór - Status
|Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze
|Portal:Informatyka|Portal - Informatyka
|Portal:Nauki techniczne|Portal - Nauki techniczne
|Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne
|Portal:Sport i rozrywka|Portal - Sport i rozrywka
|Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne
|Wikibooks:Promocja|Promocja
|Pomoc:Tryb ciemny|Tryb ciemny
|Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks
|Wikibooks:Historia Wikibooks|Historia Wikibooks
|Wikibooks:Piąte urodziny|Piąte urodziny
|Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks
|Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009
|Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks
|Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009
|Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011
|Wikibooks:Statystyki|Statystyki
|Pomoc:Spis treści/Technikalia|Technikalia
|Wikibooks:Przestrzenie nazw|Przestrzenie nazw
|Wikibooks:Poczekalnia|Poczekalnia
|Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa
|Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje
|Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły
|Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne
|Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia
|Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione
|Wikibooks:VisualEditor|VisualEditor
|Pomoc:Nowa skórka – wektor|Nowa skórka – wektor
|Wikibooks:Skróty|Skróty
|Pomoc:Spis treści/Strona główna|Strona główna
|Pomoc:Spis treści/Wybrane książki|Wybrane książki
|Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki
|Wikibooks:Szablony|Mechanizm MediaWiki - Szablony
|Wikibooks:Moduły|Mechanizm MediaWiki - Moduły
|Wikibooks:Moduły/Parametry|Moduł:Parametry
|Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I
|Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II
|Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III
|Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV
|Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V
|Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI
|Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII
|Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII
|Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX
|Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X
|Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI
|Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII
|Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII
|Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV
|Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV
|Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI
|Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII
|Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII
|Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX
|Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX
|Wikibooks:Moduły/Html|Moduł:Html
|Wikibooks:Moduły/Książkowe|Moduł:Książkowe
|Wikibooks:Moduły/Nazwy|Moduł:Nazwy
|Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I
|Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II
|Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III
|Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV
|Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np
|Wikibooks:Moduły/Pudełko|Moduł:Pudełko
|Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I
|Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II
|Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III
|Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV
|Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V
|Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne
|Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne
|Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy
|Wikibooks:Moduły/Ramka|Moduł:Ramka
|Wikibooks:Moduły/Specjalne|Moduł:Specjalne
|Wikibooks:Moduły/StronicowyParser|StronicowyParser
|Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII
|Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron
|Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu
|Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron
|Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne
|Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy
|Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II
|Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II
|Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst
|Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II
|Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu
|Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje
|Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty
|Wikibooks:Moduły/Szeregi|Moduł:Szeregi
|Wikibooks:Moduły/Skrót|Moduł:Skrót
|Wikibooks:Moduły/Strony|Moduł:Strony
|Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna
|Wikibooks:Szablony/Ogólne|Szablony - Ogólne
|Wikibooks:Szablony/Informacje|Szablony - Informacje
|Wikibooks:Szablony/PrzypisStrona|PrzypisStrona
|Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe
|Wikibooks:Szablony/Książkowe|Szablony - Książkowe
|Wikibooks:Szablony/Tekst|Szablony - Tekst
|Wikibooks:Szablony/Zawartość|Szablony - Zawartość
|Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki
|Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania
|Wikibooks:Szablony/Języki|Szablony - Języki
|Wikibooks:Szablony/Liczby|Szablony - Liczby
|Wikibooks:Szablony/Kategorie|Szablony - Kategorie
|Wikibooks:Szablony/Opisy|Szablony - Opisy
|Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki
|Wikibooks:Szablony/Szablony opływania|Szablony opływania
|Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe
|Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe
|Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne
|Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog
|Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I
|Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II
|Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III
|Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV
|Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V
|Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI
|Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty
|Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)
|Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe
|Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów
|Wikibooks:Szablony/Linki|Szablony - Linki
|Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne
|Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia
|Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja
|Wikibooks:Szablony/Media|Szablony - Media
|Wikibooks:Szablony/Grafika|Szablony - Grafika
|Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie
|Wikibooks:Szablony/Techniczne|Szablony - Techniczne
|Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta
|Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty
|Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki
|Wikibooks:Szablony/Systemowe|Szablony - Systemowe
|Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I
|Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II
|Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III
|Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV
|Pomoc:Spis treści/Administracja|Administracja
|Wikibooks:Kwestie techniczne|Kwestie techniczne
|Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy
|Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB)
|Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA)
|Wikibooks:Administratorzy|Administratorzy
|Wikibooks:Prośby do administratorów|Prośby do administratorów
|Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu
|Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu
|Wikibooks:Biurokraci|Biurokraci
|Wikibooks:Boty|Boty
|Wikibooks:Stewardzi|Stewardzi
|Wikibooks:Użytkownicy|Użytkownicy
|Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy
|Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy
|Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień
|Wikibooks:Nazwa użytkownika|Nazwa użytkownika
|Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika
|Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP
|Wikibooks:GNU Free Documentation License|GNU Free Documentation License
}}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude>
p50ws0hhhqj0l1ucx747j29u9rlj92e
556458
556456
2026-09-15T03:00:30Z
Persino
2851
556458
wikitext
text/x-wiki
<includeonly>{{Układ autonawigacji|krok={{{1}}}
|automat manualny=tak
|spis treści=Pomoc:Spis treści
|Pomoc:Spis treści|Pomoc - Spis treści
|Pomoc:Spis treści/Wstęp|Wstęp
|Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy
|Wikibooks:Zasady i wskazówki|Zasady i wskazówki
|Wikibooks:Szybka pomoc|Szybka pomoc
|Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks?
|Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks
|Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę?
|Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników?
|Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks?
|Wikibooks:Wikietykieta|Wikietykieta
|Pomoc:Wikietykieta|Wikietykieta
|Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia
|Pomoc:Żargon użytkowników|Żargon użytkowników
|Wikibooks:Informacje prawne|Informacje prawne
|Wikibooks:Prawa autorskie|Prawa autorskie
|Pomoc:Spis treści/Edycja|Edycja
|Wikibooks:Brudnopis|Brudnopis
|Pomoc:Edycja kodu|Edycja kodu
|Wikibooks:Import stron|Import stron
|Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek
|Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks
|Pomoc:Jak edytować artykuły|Jak edytować artykuły?
|Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów
|Pomoc:Podświetlanie składni|Podświetlanie składni
|Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami
|Pomoc:Quiz|Quiz
|Pomoc:Tworzenie podręcznika|Tworzenie podręcznika
|Wikibooks:Wandalizm|Wandalizm
|Wikibooks:Podręczniki do druku|Podręczniki do druku
|Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku
|Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF
|Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex
|Pomoc:Książki|Książki
|Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca
|Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie
|Wikibooks:Wkład miesiąca/Wstęp|Wstęp
|Wikibooks:Wkład miesiąca/Regulamin|Regulamin
|Wikibooks:Wkład miesiąca/Nominacje|Nominacje
|Pomoc:Spis treści/Komunikacja|Komunikacja
|Wikibooks:Kanał IRC|Kanał IRC
|Wikibooks:Kontakt|Kontakt
|Wikibooks:Portal użytkowników|Portal użytkowników
|Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji
|Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne
|Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks
|Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks?
|Wikibooks:Księgozbiór|Księgozbiór
|Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane
|Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie
|Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie
|Kategoria:Kategorie podręcznikowe|Księgozbiór - Według kategorii
|Wikibooks:Księgozbiór/Poziom|Księgozbiór - Poziom
|Wikibooks:Księgozbiór/Status|Księgozbiór - Status
|Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze
|Portal:Informatyka|Portal - Informatyka
|Portal:Nauki techniczne|Portal - Nauki techniczne
|Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne
|Portal:Sport i rozrywka|Portal - Sport i rozrywka
|Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne
|Wikibooks:Promocja|Promocja
|Pomoc:Tryb ciemny|Tryb ciemny
|Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks
|Wikibooks:Historia Wikibooks|Historia Wikibooks
|Wikibooks:Piąte urodziny|Piąte urodziny
|Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks
|Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009
|Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks
|Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009
|Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011
|Wikibooks:Statystyki|Statystyki
|Pomoc:Spis treści/Technikalia|Technikalia
|Wikibooks:Przestrzenie nazw|Przestrzenie nazw
|Wikibooks:Poczekalnia|Poczekalnia
|Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa
|Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje
|Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły
|Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne
|Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia
|Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione
|Wikibooks:VisualEditor|VisualEditor
|Pomoc:Nowa skórka – wektor|Nowa skórka – wektor
|Wikibooks:Skróty|Skróty
|Pomoc:Spis treści/Strona główna|Strona główna
|Pomoc:Spis treści/Wybrane książki|Wybrane książki
|Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki
|Wikibooks:Szablony|Mechanizm MediaWiki - Szablony
|Wikibooks:Moduły|Mechanizm MediaWiki - Moduły
|Wikibooks:Moduły/Parametry|Moduł:Parametry
|Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I
|Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II
|Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III
|Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV
|Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V
|Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI
|Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII
|Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII
|Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX
|Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X
|Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI
|Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII
|Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII
|Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV
|Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV
|Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI
|Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII
|Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII
|Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX
|Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX
|Wikibooks:Moduły/Html|Moduł:Html
|Wikibooks:Moduły/Książkowe|Moduł:Książkowe
|Wikibooks:Moduły/Nazwy|Moduł:Nazwy
|Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I
|Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II
|Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III
|Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV
|Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np
|Wikibooks:Moduły/Pudełko|Moduł:Pudełko
|Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I
|Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II
|Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III
|Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV
|Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V
|Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne
|Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne
|Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy
|Wikibooks:Moduły/Ramka|Moduł:Ramka
|Wikibooks:Moduły/Specjalne|Moduł:Specjalne
|Wikibooks:Moduły/StronicowyParser|StronicowyParser
|Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII
|Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron
|Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu
|Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron
|Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne
|Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy
|Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II
|Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II
|Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst
|Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II
|Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu
|Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje
|Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty
|Wikibooks:Moduły/Szeregi|Moduł:Szeregi
|Wikibooks:Moduły/Skrót|Moduł:Skrót
|Wikibooks:Moduły/Strony|Moduł:Strony
|Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna
|Wikibooks:Szablony/Ogólne|Szablony - Ogólne
|Wikibooks:Szablony/Informacje|Szablony - Informacje
|Wikibooks:Szablony/PrzypisStrona|PrzypisStrona
|Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe
|Wikibooks:Szablony/Książkowe|Szablony - Książkowe
|Wikibooks:Szablony/Tekst|Szablony - Tekst
|Wikibooks:Szablony/Zawartość|Szablony - Zawartość
|Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki
|Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania
|Wikibooks:Szablony/Języki|Szablony - Języki
|Wikibooks:Szablony/Liczby|Szablony - Liczby
|Wikibooks:Szablony/Kategorie|Szablony - Kategorie
|Wikibooks:Szablony/Opisy|Szablony - Opisy
|Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki
|Wikibooks:Szablony/Szablony opływania|Szablony opływania
|Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe
|Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe
|Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne
|Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog
|Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I
|Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II
|Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III
|Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV
|Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V
|Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI
|Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty
|Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)
|Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe
|Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów
|Wikibooks:Szablony/Linki|Szablony - Linki
|Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne
|Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia
|Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja
|Wikibooks:Szablony/Media|Szablony - Media
|Wikibooks:Szablony/Grafika|Szablony - Grafika
|Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie
|Wikibooks:Szablony/Techniczne|Szablony - Techniczne
|Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta
|Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty
|Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki
|Wikibooks:Szablony/Systemowe|Szablony - Systemowe
|Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I
|Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II
|Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III
|Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV
|Pomoc:Spis treści/Administracja|Administracja
|Wikibooks:Kwestie techniczne|Kwestie techniczne
|Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy
|Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB)
|Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA)
|Wikibooks:Administratorzy|Administratorzy
|Wikibooks:Prośby do administratorów|Prośby do administratorów
|Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu
|Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu
|Wikibooks:Biurokraci|Biurokraci
|Wikibooks:Boty|Boty
|Wikibooks:Stewardzi|Stewardzi
|Wikibooks:Użytkownicy|Użytkownicy
|Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy
|Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy
|Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień
|Wikibooks:Nazwa użytkownika|Nazwa użytkownika
|Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika
|Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP
|Wikibooks:GNU Free Documentation License|GNU Free Documentation License
}}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude>
d597qgbqsya7e2rceuaxrde44duq828
556459
556458
2026-09-15T03:02:43Z
Persino
2851
556459
wikitext
text/x-wiki
<includeonly>{{Układ autonawigacji|krok={{{1}}}
|automat manualny=tak
|spis treści=Pomoc:Spis treści
|Pomoc:Spis treści|Pomoc - Spis treści
|Pomoc:Spis treści/Wstęp|Wstęp
|Wikibooks:Witamy nowicjuszy|Witamy nowicjuszy
|Wikibooks:Zasady i wskazówki|Zasady i wskazówki
|Wikibooks:Szybka pomoc|Szybka pomoc
|Wikibooks:Czym jest Wikibooks|Czym jest Wikibooks?
|Wikibooks:Różnice między Wikipedią i Wikibooks|Różnice między Wikipedią i Wikibooks
|Wikibooks:Dlaczego warto rozpocząć współpracę|Dlaczego warto rozpocząć współpracę?
|Wikibooks:Dlaczego używać wolnych podręczników|Dlaczego używać wolnych podręczników?
|Wikibooks:Dlaczego nie pisać na Wikibooks|Dlaczego nie pisać na Wikibooks?
|Wikibooks:Wikietykieta|Wikietykieta
|Pomoc:Wikietykieta|Wikietykieta
|Wikibooks:Neutralny punkt widzenia|Neutralny punkt widzenia
|Pomoc:Żargon użytkowników|Żargon użytkowników
|Wikibooks:Informacje prawne|Informacje prawne
|Wikibooks:Prawa autorskie|Prawa autorskie
|Pomoc:Spis treści/Edycja|Edycja
|Wikibooks:Brudnopis|Brudnopis
|Pomoc:Edycja kodu|Edycja kodu
|Wikibooks:Import stron|Import stron
|Wikibooks:Etapy rozwoju książek|Etapy rozwoju książek
|Wikibooks:Ilustracja Wikibooks|Ilustracja Wikibooks
|Pomoc:Jak edytować artykuły|Jak edytować artykuły?
|Wikibooks:Nazewnictwo artykułów|Nazewnictwo artykułów
|Pomoc:Podświetlanie składni|Podświetlanie składni
|Pomoc:Problemy z polskimi znakami|Problemy z polskimi znakami
|Pomoc:Quiz|Quiz
|Pomoc:Tworzenie podręcznika|Tworzenie podręcznika
|Wikibooks:Wandalizm|Wandalizm
|Wikibooks:Podręczniki do druku|Podręczniki do druku
|Pomoc:Tworzenie wersji do druku|Tworzenie wersji do druku
|Pomoc:Tworzenie wersji PDF|Tworzenie wersji PDF
|Pomoc:Tworzenie wersji PDF/javaLatex|Tworzenie wersji PDF/javaLatex
|Pomoc:Książki|Książki
|Pomoc:Spis treści/Wkład miesiąca|Wkład miesiąca
|Wikibooks:Wkład miesiąca/Aktualne głosowanie|Aktualne głosowanie
|Wikibooks:Wkład miesiąca/Wstęp|Wstęp
|Wikibooks:Wkład miesiąca/Regulamin|Regulamin
|Wikibooks:Wkład miesiąca/Nominacje|Nominacje
|Pomoc:Spis treści/Komunikacja|Komunikacja
|Wikibooks:Kanał IRC|Kanał IRC
|Wikibooks:Kontakt|Kontakt
|Wikibooks:Portal użytkowników|Portal użytkowników
|Pomoc:Archiwizowanie strony dyskusji|Archiwizowanie strony dyskusji
|Wikibooks:Przedstawicielstwo dyplomatyczne|Przedstawicielstwo dyplomatyczne
|Pomoc:Spis treści/Korzystanie z Wikibooks|Korzystanie z Wikibooks
|Wikibooks:Jak przeglądać Wikibooks|Jak przeglądać Wikibooks?
|Wikibooks:Księgozbiór|Księgozbiór
|Wikibooks:Księgozbiór/Wybrane|Księgozbiór - Wybrane
|Wikibooks:Księgozbiór/Alfabetycznie|Księgozbiór - Alfabetycznie
|Wikibooks:Księgozbiór/Tematycznie|Księgozbiór - Tematycznie
|Kategoria:Kategorie podręcznikowe|Księgozbiór - Według kategorii
|Wikibooks:Księgozbiór/Poziom|Księgozbiór - Według poziomu
|Wikibooks:Księgozbiór/Status|Księgozbiór - Według rozwoju
|Portal:Nauki ścisłe i przyrodnicze|Portal - Nauki ścisłe i przyrodnicze
|Portal:Informatyka|Portal - Informatyka
|Portal:Nauki techniczne|Portal - Nauki techniczne
|Portal:Nauki społeczne i humanistyczne|Portal - Nauki społeczne i humanistyczne
|Portal:Sport i rozrywka|Portal - Sport i rozrywka
|Portal:Hobby, poradniki i książki różne|Portal - Hobby, poradniki i książki różne
|Wikibooks:Promocja|Promocja
|Pomoc:Tryb ciemny|Tryb ciemny
|Pomoc:Spis treści/Historia Wikibooks|Historia Wikibooks
|Wikibooks:Historia Wikibooks|Historia Wikibooks
|Wikibooks:Piąte urodziny|Piąte urodziny
|Wikibooks:6. urodziny polskich Wikibooks|6. urodziny polskich Wikibooks
|Wikibooks:Wikikalendarz 2009|Wikikalendarz 2009
|Wikibooks:Sprzątanie Wikibooks|Sprzątanie Wikibooks
|Wikibooks:Sprzątanie Wikibooks/2009|Sprzątanie Wikibooks - 2009
|Wikibooks:Sprzątanie Wikibooks/2011|Sprzątanie Wikibooks - 2011
|Wikibooks:Statystyki|Statystyki
|Pomoc:Spis treści/Technikalia|Technikalia
|Wikibooks:Przestrzenie nazw|Przestrzenie nazw
|Wikibooks:Poczekalnia|Poczekalnia
|Wikibooks:Poczekalnia/naprawa|Poczekalnia - Naprawa
|Wikibooks:Poczekalnia/prowokacje|Poczekalnia - Prowokacje
|Wikibooks:Poczekalnia/artykuły|Poczekalnia - Artykuły
|Wikibooks:Poczekalnia/kwestie techniczne|Poczekalnia - Kwestie techniczne
|Wikibooks:Poczekalnia/Zgłoszenia|Poczekalnia - Zgłoszenia
|Wikibooks:Poczekalnia/Załatwione|Poczekalnia - Załatwione
|Wikibooks:VisualEditor|VisualEditor
|Pomoc:Nowa skórka – wektor|Nowa skórka – wektor
|Wikibooks:Skróty|Skróty
|Pomoc:Spis treści/Strona główna|Strona główna
|Pomoc:Spis treści/Wybrane książki|Wybrane książki
|Wikibooks:Mechanizm MediaWiki|Mechanizm MediaWiki
|Wikibooks:Szablony|Mechanizm MediaWiki - Szablony
|Wikibooks:Moduły|Mechanizm MediaWiki - Moduły
|Wikibooks:Moduły/Parametry|Moduł:Parametry
|Wikibooks:Moduły/Parametry/Tom I|Moduł:Parametry - Tom I
|Wikibooks:Moduły/Parametry/Tom II|Moduł:Parametry - Tom II
|Wikibooks:Moduły/Parametry/Tom III|Moduł:Parametry - Tom III
|Wikibooks:Moduły/Parametry/Tom IV|Moduł:Parametry - Tom IV
|Wikibooks:Moduły/Parametry/Tom V|Moduł:Parametry - Tom V
|Wikibooks:Moduły/Parametry/Tom VI|Moduł:Parametry - Tom VI
|Wikibooks:Moduły/Parametry/Tom VII|Moduł:Parametry - Tom VII
|Wikibooks:Moduły/Parametry/Tom VIII|Moduł:Parametry - Tom VIII
|Wikibooks:Moduły/Parametry/Tom IX|Moduł:Parametry - Tom IX
|Wikibooks:Moduły/Parametry/Tom X|Moduł:Parametry - Tom X
|Wikibooks:Moduły/Parametry/Tom XI|Moduł:Parametry - Tom XI
|Wikibooks:Moduły/Parametry/Tom XII|Moduł:Parametry - Tom XII
|Wikibooks:Moduły/Parametry/Tom XIII|Moduł:Parametry - Tom XIII
|Wikibooks:Moduły/Parametry/Tom XIV|Moduł:Parametry - Tom XIV
|Wikibooks:Moduły/Parametry/Tom XV|Moduł:Parametry - Tom XV
|Wikibooks:Moduły/Parametry/Tom XVI|Moduł:Parametry - Tom XVI
|Wikibooks:Moduły/Parametry/Tom XVII|Moduł:Parametry - Tom XVII
|Wikibooks:Moduły/Parametry/Tom XVIII|Moduł:Parametry - Tom XVIII
|Wikibooks:Moduły/Parametry/Tom XIX|Moduł:Parametry - Tom XIX
|Wikibooks:Moduły/Parametry/Tom XX|Moduł:Parametry - Tom XX
|Wikibooks:Moduły/Html|Moduł:Html
|Wikibooks:Moduły/Książkowe|Moduł:Książkowe
|Wikibooks:Moduły/Nazwy|Moduł:Nazwy
|Wikibooks:Moduły/Nazwy/Tom I|Moduł:Nazwy - Tom I
|Wikibooks:Moduły/Nazwy/Tom II|Moduł:Nazwy - Tom II
|Wikibooks:Moduły/Nazwy/Tom III|Moduł:Nazwy - Tom III
|Wikibooks:Moduły/Nazwy/Tom IV|Moduł:Nazwy - Tom IV
|Wikibooks:Moduły/Nazwy/Np|Moduł:Nazwy - Np
|Wikibooks:Moduły/Pudełko|Moduł:Pudełko
|Wikibooks:Moduły/Pudełko/Tom I|Moduł:Pudełko - Tom I
|Wikibooks:Moduły/Pudełko/Tom II|Moduł:Pudełko - Tom II
|Wikibooks:Moduły/Pudełko/Tom III|Moduł:Pudełko - Tom III
|Wikibooks:Moduły/Pudełko/Tom IV|Moduł:Pudełko - Tom IV
|Wikibooks:Moduły/Pudełko/Tom V|Moduł:Pudełko - Tom V
|Wikibooks:Moduły/Pudełko/Pomocne|Moduł:Pudełko - Pomocne
|Wikibooks:Moduły/Pudełko/Potrzebne|Moduł:Pudełko - Potrzebne
|Wikibooks:Moduły/Pudełko/ParametryCechy|Moduł:Pudełko - Parametry Cechy
|Wikibooks:Moduły/Ramka|Moduł:Ramka
|Wikibooks:Moduły/Specjalne|Moduł:Specjalne
|Wikibooks:Moduły/StronicowyParser|StronicowyParser
|Wikibooks:Moduły/StronicowyParser/Moduł główny|StronicowyParser - Moduł główny
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy|StronicowyParser - AnalizaSpisuRzeczy
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom I|StronicowyParser - AnalizaSpisuRzeczy - Tom I
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom II|StronicowyParser - AnalizaSpisuRzeczy - Tom II
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom III|StronicowyParser - AnalizaSpisuRzeczy - Tom III
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom IV|StronicowyParser - AnalizaSpisuRzeczy - Tom IV
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V|StronicowyParser - AnalizaSpisuRzeczy - Tom V
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI|StronicowyParser - AnalizaSpisuRzeczy - Tom VI
|Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VII|StronicowyParser - AnalizaSpisuRzeczy - Tom VII
|Wikibooks:Moduły/StronicowyParser/GłównaFunkcjaZbieraniaDanychStron|StronicowyParser - GłównaFunkcjaZbieraniaDanychStron
|Wikibooks:Moduły/StronicowyParser/Kategorie|StronicowyParser - Kategorie
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaArtykułówKsiążek|StronicowyParser - NumerLubNazwaArtykułówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerLubNazwaNagłówkówKsiążek|StronicowyParser - NumerLubNazwaNagłówkówKsiążek
|Wikibooks:Moduły/StronicowyParser/NumerObiektu|StronicowyParser - NumerObiektu
|Wikibooks:Moduły/StronicowyParser/NumeracjaObiektówStron|StronicowyParser - NumeracjaObiektówStron
|Wikibooks:Moduły/StronicowyParser/Potrzebne|StronicowyParser - Potrzebne
|Wikibooks:Moduły/StronicowyParser/Problemy|StronicowyParser - Problemy
|Wikibooks:Moduły/StronicowyParser/Rozdziały|StronicowyParser - Rozdziały
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I|StronicowyParser - Rozdziały - Tom I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II|StronicowyParser - Rozdziały - Tom II
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III|StronicowyParser - Rozdziały - Tom III
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV|StronicowyParser - Rozdziały - Tom IV
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V|StronicowyParser - Rozdziały - Tom V
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I|StronicowyParser - Rozdziały - Tom V - Część I
|Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II|StronicowyParser - Rozdziały - Tom V - Część II
|Wikibooks:Moduły/StronicowyParser/SpisTreści|StronicowyParser - SpisTreści
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom I|StronicowyParser - SpisTreści - Tom I
|Wikibooks:Moduły/StronicowyParser/SpisTreści/Tom II|StronicowyParser - SpisTreści - Tom II
|Wikibooks:Moduły/StronicowyParser/StronaSubst|StronicowyParser - StronaSubst
|Wikibooks:Moduły/StronicowyParser/Tekst|StronicowyParser - Tekst
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron|StronicowyParser - ZbieranieDanychStron
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I|StronicowyParser - ZbieranieDanychStron - Tom I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II|StronicowyParser - ZbieranieDanychStron - Tom II
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III|StronicowyParser - ZbieranieDanychStron - Tom III
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV|StronicowyParser - ZbieranieDanychStron - Tom IV
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V|StronicowyParser - ZbieranieDanychStron - Tom V
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI|StronicowyParser - ZbieranieDanychStron - Tom VI
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I|StronicowyParser - ZbieranieDanychStron - Tom VI - Część I
|Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II|StronicowyParser - ZbieranieDanychStron - Tom VI - Część II
|Wikibooks:Moduły/StronicowyParser/SzablonyTekstu|StronicowyParser - SzablonyTekstu
|Wikibooks:Moduły/StronicowyParser/informacje|StronicowyParser - informacje
|Wikibooks:Moduły/StronicowyParser/obiekty|StronicowyParser - obiekty
|Wikibooks:Moduły/Szeregi|Moduł:Szeregi
|Wikibooks:Moduły/Skrót|Moduł:Skrót
|Wikibooks:Moduły/Strony|Moduł:Strony
|Wikibooks:Moduły/Sekcja referencyjna|Moduł:Sekcja referencyjna
|Wikibooks:Szablony/Ogólne|Szablony - Ogólne
|Wikibooks:Szablony/Informacje|Szablony - Informacje
|Wikibooks:Szablony/PrzypisStrona|PrzypisStrona
|Wikibooks:Szablony/Podręcznikowe|Szablony - Podręcznikowe
|Wikibooks:Szablony/Książkowe|Szablony - Książkowe
|Wikibooks:Szablony/Tekst|Szablony - Tekst
|Wikibooks:Szablony/Zawartość|Szablony - Zawartość
|Wikibooks:Szablony/Nagłówki|Szablony - Nagłówki
|Wikibooks:Szablony/Przekierowania|Szablony - Przekierowania
|Wikibooks:Szablony/Języki|Szablony - Języki
|Wikibooks:Szablony/Liczby|Szablony - Liczby
|Wikibooks:Szablony/Kategorie|Szablony - Kategorie
|Wikibooks:Szablony/Opisy|Szablony - Opisy
|Wikibooks:Szablony/Znaczniki|Szablony - Znaczniki
|Wikibooks:Szablony/Szablony opływania|Szablony opływania
|Wikibooks:Szablony/Stronicowe|Szablony - Stronicowe
|Wikibooks:Szablony/Kontenerowe|Szablony - Kontenerowe
|Wikibooks:Szablony/Elastyczne|Szablony - Elastyczne
|Wikibooks:Szablony/Infoboksy/Prolog|Szablony - Infoboksy - Prolog
|Wikibooks:Szablony/Infoboksy/Tom I|Szablony - Infoboksy - Tom I
|Wikibooks:Szablony/Infoboksy/Tom II|Szablony - Infoboksy - Tom II
|Wikibooks:Szablony/Infoboksy/Tom III|Szablony - Infoboksy - Tom III
|Wikibooks:Szablony/Infoboksy/Tom IV|Szablony - Infoboksy - Tom IV
|Wikibooks:Szablony/Infoboksy/Tom V|Szablony - Infoboksy - Tom V
|Wikibooks:Szablony/Infoboksy/Tom VI|Szablony - Infoboksy - Tom VI
|Wikibooks:Szablony/Infoboksy/Komponenty|Szablony - Infoboksy - Komponenty
|Wikibooks:Szablony/Infoboksy/Komponenty (organizmy żywe)|Infoboksy - Komponenty (organizmy żywe)
|Wikibooks:Szablony/Porządkowe|Szablony - Porządkowe
|Wikibooks:Szablony/Źródła artykułów|Szablony - Źródła artykułów
|Wikibooks:Szablony/Linki|Szablony - Linki
|Wikibooks:Szablony/Linki inteligentne|Szablony - Linki inteligentne
|Wikibooks:Szablony/Do usunięcia|Szablony - Do usunięcia
|Wikibooks:Szablony/Nawigacja|Szablony - Nawigacja
|Wikibooks:Szablony/Media|Szablony - Media
|Wikibooks:Szablony/Grafika|Szablony - Grafika
|Wikibooks:Szablony/Licencjonowanie|Szablony - Licencjonowanie
|Wikibooks:Szablony/Techniczne|Szablony - Techniczne
|Wikibooks:Szablony/Wikipedysta|Szablony - Wikipedysta
|Wikibooks:Szablony/Dyskusja Wikipedysty|Szablony - Dyskusja Wikipedysty
|Wikibooks:Szablony/MediaWiki|Szablony - MediaWiki
|Wikibooks:Szablony/Systemowe|Szablony - Systemowe
|Pomoc:Spis treści/Szablony/Tom I|Szablony - Tom I
|Pomoc:Spis treści/Szablony/Tom II|Szablony - Tom II
|Pomoc:Spis treści/Szablony/Tom III|Szablony - Tom III
|Pomoc:Spis treści/Szablony/Tom IV|Szablony - Tom IV
|Pomoc:Spis treści/Administracja|Administracja
|Wikibooks:Kwestie techniczne|Kwestie techniczne
|Wikibooks:Wikipedyści potrzebujący pomocy|Wikipedyści potrzebujący pomocy
|Wikibooks:Zgłoś błąd (ZB)|Zgłoś błąd (ZB)
|Wikibooks:Lista Naruszeń Praw Autorskich (NPA)|Lista Naruszeń Praw Autorskich (NPA)
|Wikibooks:Administratorzy|Administratorzy
|Wikibooks:Prośby do administratorów|Prośby do administratorów
|Wikibooks:Administratorzy interfejsu|Administratorzy interfejsu
|Wikibooks:Prośby do administratorów interfejsu|Prośby do administratorów interfejsu
|Wikibooks:Biurokraci|Biurokraci
|Wikibooks:Boty|Boty
|Wikibooks:Stewardzi|Stewardzi
|Wikibooks:Użytkownicy|Użytkownicy
|Wikibooks:Automatycznie zatwierdzeni użytkownicy|Automatycznie zatwierdzeni użytkownicy
|Wikibooks:Zatwierdzeni użytkownicy|Zatwierdzeni użytkownicy
|Wikibooks:Przyznawanie uprawnień|Przyznawanie uprawnień
|Wikibooks:Nazwa użytkownika|Nazwa użytkownika
|Wikibooks:Prośby o zmianę nazwy użytkownika|Prośby o zmianę nazwy użytkownika
|Wikibooks:Uprawnieni do logowania się z zablokowanych adresów IP|Uprawnieni do logowania się z zablokowanych adresów IP
|Wikibooks:GNU Free Documentation License|GNU Free Documentation License
}}</includeonly><noinclude>{{Dokumentacja|zawartość=Szablon manualny (ręczny), nie automatyczny, bo ustawiony za pomocą {{Parametr|automat manualny|tak}}, wskazujący poprzedni i następny artykuł pomocy oraz ich stronę główną, czyli spis po {{LinkPomoc2|Spis treści}}.}}{{Kategoria|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}</noinclude>
oclt5535ifppgq7u60sb274ebfdgnmm
Moduł:Ramka/dane
828
61466
556497
510433
2026-09-15T06:27:05Z
Persino
2851
556497
Scribunto
text/plain
local p={};
p.tablica_warunkowe_i_parametr={
["__!__"]={"|","{{!}}",},
["__!!__"]={"||","{{!!}}",},
["__(__"]={"{","{{(}}",},
["__((__"]={"{{","{{((}}",},
["__(((__"]={"{{{","{{(((}}",},
["__)__"]={"}","{{)}}",},
["__))__"]={"}}","{{))}}",},
["__)))__"]={"}}}","{{)))}}",},
["__!(__"]={"[","{{!(}}",},
["__!((__"]={"[[","{{!((}}",},
["__)!__"]={"]","{{)!}}",},
["__))!__"]={"]]","{{))!}}",},
};
p.bez_parametrowa_tablica={
["Nazwa"]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["bez argumentów szablonu"]=true,
--["bez dodatkowych sprawdzeń"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
["parametry podstawowe funkcji modułu pudełek"]=true,
["usuń z parametrów ramki"]=true,
};
p.bez_parametrowa_pakowania_zmiennych_rodzica={
["tabelka_parametrow_rodzica"]=true,
}
return p;
bbtaf1slhm4m7437o29batyiiyjlz71
556498
556497
2026-09-15T06:31:06Z
Persino
2851
Anulowano wersję [[Special:Diff/556497|556497]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
556498
Scribunto
text/plain
local p={};
p.tablica_warunkowe_i_parametr={
["__!__"]={"|","{{!}}",},
["__!!__"]={"||","{{!!}}",},
["__(__"]={"{","{{(}}",},
["__((__"]={"{{","{{((}}",},
["__(((__"]={"{{{","{{(((}}",},
["__)__"]={"}","{{)}}",},
["__))__"]={"}}","{{))}}",},
["__)))__"]={"}}}","{{)))}}",},
["__!(__"]={"[","{{!(}}",},
["__!((__"]={"[[","{{!((}}",},
["__)!__"]={"]","{{)!}}",},
["__))!__"]={"]]","{{))!}}",},
};
p.bez_parametrowa_tablica={
["Nazwa"]=true,
["bez argumentów rodzica"]=true,
["nazwa szablonu rodzica"]=true,
["bez argumentów nienazwanych rodzica"]=true,
["potomek"]=true,
["nie potomek"]=true,
["bez argumentów szablonu"]=true,
--["bez dodatkowych sprawdzeń"]=true,
["parametry rodzica"]=true,
["zmienna z parametrami rodzica"]=true,
["zmienna z argumentami ramki"]=true,
["zmienna z nazwą szablonu rodzica"]=true,
["parametry funkcji modułu pudełek"]=true,
["parametry podstawowe funkcji modułu pudełek"]=true,
["usuń z parametrów ramki"]=true,
};
return p;
5e8of6jwpa7fadt6kly95ek1pz14wob
Szablon:Pszcz Pasieka24
10
62064
556483
527886
2026-09-15T05:11:57Z
Persino
2851
556483
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
akfijliyp8t9igl7pmy45ponv21rw93
556490
556483
2026-09-15T06:00:00Z
Persino
2851
556490
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619|zmienna z nazwą szablonu rodzica=tak}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
68gwtynwtx0nsce1ekfowldop6jd20u
556512
556490
2026-09-15T07:30:03Z
Persino
2851
556512
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://pasieka24.pl/index.php/pl-pl/pasieka-czasopismo-dla-pszczelarzy|czasopismo=Czasopismo Pasieka|issn=1730-7619}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
akfijliyp8t9igl7pmy45ponv21rw93
Szablon:Ziel Panacea
10
62065
556509
527515
2026-09-15T07:27:13Z
Persino
2851
556509
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://panacea.pl}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
g9xr5tiy22e5bqv3i4trfeq7vongjen
Szablon:Pszcz PZN
10
62165
556514
528669
2026-09-15T07:31:11Z
Persino
2851
556514
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://miesiecznik-pszczelarstwo.pl/uploads/pzn|czasopismo=Pszczelnicze Zeszyty Naukowe|issn=0552-4563.}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
o9m0rb6u7b2f2che93omcwayqofbg5a
556524
556514
2026-09-15T08:06:31Z
Persino
2851
556524
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://miesiecznik-pszczelarstwo.pl/uploads/pzn|czasopismo=Pszczelnicze Zeszyty Naukowe|issn=0552-4563}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
f67pphp8dycv8v954hytucjom4d3x8t
Szablon:Pszcz PDR
10
62167
556513
527513
2026-09-15T07:30:40Z
Persino
2851
556513
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=http://doradztworolnicze.com}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
ciwmimxz0rtnxvvv0mg06zhdq4b1dyg
Szablon:Pszcz FeA
10
62169
556510
527510
2026-09-15T07:28:07Z
Persino
2851
556510
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://www.bombus.it/pdf/fiori_e_api}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
p1zw0darpyuqngz1v3kr05tsd7aimns
Szablon:PrzypisStrona/opis
10
62171
556477
533940
2026-09-15T04:19:56Z
Persino
2851
Persino przeniósł(-osła) stronę [[Szablon:PrzypisStrona/opis]] do [[Szablon:PrzypisStrona/silnik/opis]], bez pozostawienia przekierowania pod starym tytułem
533940
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|bez argumentów szablonu{{=}}url;tytuł;praca|zmienna z parametrami rodzica{{=}}tak|zmienna z argumentami ramki{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj|custom|...}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane w nagłówku {{s|pre}}, na dwa sposoby, w tym szablonie.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry ignorowane: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
332insr18m9pc27qm0h826ugesto74o
556478
556477
2026-09-15T04:20:32Z
Persino
2851
Persino przeniósł(-osła) stronę [[Szablon:PrzypisStrona/silnik/opis]] do [[Szablon:PrzypisStrona/opis]], bez pozostawienia przekierowania pod starym tytułem
533940
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|bez argumentów szablonu{{=}}url;tytuł;praca|zmienna z parametrami rodzica{{=}}tak|zmienna z argumentami ramki{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj|custom|...}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane w nagłówku {{s|pre}}, na dwa sposoby, w tym szablonie.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry ignorowane: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
332insr18m9pc27qm0h826ugesto74o
556488
556478
2026-09-15T05:54:21Z
Persino
2851
556488
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
knluie32k6j4y436c16es7t3fzukm58
556489
556488
2026-09-15T05:59:04Z
Persino
2851
556489
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
nx5jt7hihgexdr5j8fkswo68jtf4kel
556495
556489
2026-09-15T06:18:41Z
Persino
2851
/* Przykład */
556495
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{s|RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
2fifaevi9fz8k67ho6zylhs9oqkn4wx
556501
556495
2026-09-15T06:44:00Z
Persino
2851
/* Przykład */
556501
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|Pszcz_Pasieka24|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{Pszcz_Pasieka24|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
nx5jt7hihgexdr5j8fkswo68jtf4kel
556507
556501
2026-09-15T07:20:30Z
Persino
2851
/* Przykład */
556507
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|{{PAGENAME}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{PAGENAME}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
or150ppcg7kgv2fas8xfyy4t3nlu9z8
556508
556507
2026-09-15T07:21:31Z
Persino
2851
/* Przykład */
556508
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
8jfmaaj5wzy7p8f9vjcua4bk9rqnidw
556515
556508
2026-09-15T07:36:59Z
Persino
2851
/* Przykład */
556515
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres=https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
ed22hh1w1ke54x35swsq89g6nnvg2bw
556517
556515
2026-09-15T07:48:24Z
Persino
2851
/* Przykład */
556517
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom}}}}, poprzez: {{Code|{{m|Ramka|Moduł|Nazwa{{=}}{{ld|Cytuj}}|Funkcja{{=}}custom|...}}}},aby ściągnąć parametry rodzica szablon: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
drqyxjwi8q3fvxiso5g3lpeuv1wblo0
556520
556517
2026-09-15T07:52:31Z
Persino
2851
556520
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...|zmienna z nazwą szablonu rodzica{{=}}tak}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
8r2uxant2ir5p66cw22et9eev4w6l8v
556521
556520
2026-09-15T07:53:04Z
Persino
2851
556521
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
gzun3x5uq2vxi6oe8u6qfvz8x977sxd
556522
556521
2026-09-15T07:55:23Z
Persino
2851
/* Opis parametrów dodatkowych */
556522
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|url{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
n15wfrcuc7ji7znzo7c138f2nbekthd
556523
556522
2026-09-15T07:57:08Z
Persino
2851
556523
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{s|Cytuj}}}}, poprzez wywołanie: {{Code|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|Cytuj}}|...}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
6lq81vytt20s96hxdh0v3v7eic2b3q0
556525
556523
2026-09-15T08:10:04Z
Persino
2851
556525
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o moduł: {{m|Cytuj|custom}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
twczr6fn2zwyazp1ot8tqpew4op8kt7
556526
556525
2026-09-15T08:14:56Z
Persino
2851
/* Zobacz też */
556526
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest ignorowany, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, której tej zmiennych nie wolno podawać, bo zostanie zignorowana.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
c0kk5urm1qzeurh81v0xxphfxns5epz
556547
556526
2026-09-15T10:36:50Z
Persino
2851
/* Opis parametrów dodatkowych */
556547
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
; Dwa pierwsze parametry numerowane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}{{!(}}1{{)!}}|{{!(}}2{{)!}}|serwis{{=}}|...}}}}
; A tutaj nazwane
{{Pre|{{s|{{ROOTPAGENAME}}|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|adres{{=}}{{!}}}}podstrona{{=}}|nazwa{{=}}|serwis{{=}}|...}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|Szablony można definiować w oparciu o ten szablon, wsadzając do ich definicji w sekcji: {{Tag|includeonly}}, następujący kod:|{{DivLinia}}}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||Szablon: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, wywołuje funkcję ramkową: }}{{Code|{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona|{{m|Ramka|Szablon|Nazwa{{=}}{{ls|PrzypisStrona}}|adres{{=}}<podaj url strony>|dalsze parametry...}}|{{Wikikod|{{ROOTPAGENAME}}}}}}}}{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona||.}}
Szablon: {{Tt|{{s|PrzypisStrona}}}}, wywołuje: {{Code|{{m|Cytuj}}}}, poprzez wywołanie: {{Code|{{s|Cytuj}}}}, a w nim jest uruchamiana ramka: {{Code|{{m|Cytuj|custom2}}}}, poprzez funkcję: {{Code|{{m|Cytuj|custom}}}}, aby ściągnąć parametry rodzica szablonu: {{Code|{{s|Cytuj}}}}.
Dalsze parametry szablonu: {{Tt|{{s|{{ROOTPAGENAME}}}}}}, nie licząc powyższych, są takie same jak w szablonie {{s|Cytuj}}, bez parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, ponieważ w szablonie: {{s|PrzypisStrona}}, zostały one użyte do innych celów, definiując je w oparciu o parametry, które są wskazane we wnętrzu (definicji): {{s|PrzypisStrona}}, więc ich użycie spowoduje problem: {{Code|{{m|Sprawdź|Parametry}}}}.
== Jak tworzyć szablony szczególne szablonu {{s|PrzypisStrona}}, w oparciu o ten szablon ==
Oto jest przykład szablonu:
{{ŹródłoKodu|{{LuaSubst|Szablon:Pszcz Pasieka24}}}}
== Opis parametrów ==
Szablon posiada te same zmienne, co szablon {{s|Cytuj}} (przeczytaj jego dokumentację: {{s|Cytuj/opis}}), oprócz parametrów: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane w oparciu o dodatkowe parametry, jak {{Code|adres}}, {{Code|1}} (lub {{Code|podstrona}}), {{Code|2|}} (lub {{Code|nazwa}}). Innym parametrem jest: {{Code|serwis}}.
=== Opis parametrów dodatkowych ===
* {{Code|adres}} - parametr, którym jest adres strony, jak: '''https://www.pasieka24.pl/index.php/pl-pl/''' (ten parametr jest problematycczny, bo jest wbudowany w szablon przypisów, jedynie dla szablonu: {{s|PrzypisStrona}}, już tak nie jest),
* {{Code|1}} (lub {{Code|podstrona}}) - adres podstrony serwisu (konieczny),
* {{Code|2|}} (lub {{Code|nazwa}}) - nazwa linku utworzona z dwóch poprzednich parametrów (konieczny),
* {{Code|serwis}} - nazwa strony serwisu inna niż zmienna {{Code|adres}}, jak: '''https://www.pasieka24.pl''' (opcjonalny, dobrowolny).
----
Zmienna {{Code|adres}} lub ewentualnie {{Code|serwis}}, gdy ten parametr jest podany i jest on niepusty, za pomocą, których jest generowany parametr {{Parametr|praca}} w module {{m|Cytuj}}, i dlatego, które te zmienne nie wolno podawać, bo zostanie wywołany błąd funkcji: {{Code|{{m|Sprawdź|Parametry}}}}.
=== Parametry ignorowane ===
Oto są parametry wywołujące błąd, czyli: {{Code|url}}, {{Code|tytuł}} i {{Code|praca}}, bo one zostały zdefiniowane poprzez inne zmienne. Patrz dlaczego, zajrzyj do kodu szablonu {{s|PrzypisStrona}}, a później do: {{s|Cytuj}}.
== Przykład ==
{{#ifeq:{{Szablon nie opis}}|PrzypisStrona|
; Kod
{{s|RN|{{s|PrzypisStrona|adres{{=}}https://panacea.pl|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{PrzypisStrona|adres=https://panacea.pl|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
|
; Kod
{{s|RN|{{s|{{Szablon nie opis}}|podstrona{{=}}96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor{{=}}Piotr Nowotnik|nazwa{{=}}Apiguard – ratunek w tymolu?|numer{{=}}6/2013}}}}
; Wynik
{{RN|{{{{Szablon nie opis}}|podstrona=96-pasieka-6-2013/396-apiguard-ratunek-w-tymolu|autor=Piotr Nowotnik|nazwa=Apiguard – ratunek w tymolu?|numer= 6/2013}}}}
{{OpakujKategorieZeSortowaniem|{{Przypisy}}}}
}}
== Błędy ==
Błędy należy zgłaszać na stronie {{Kwestie techniczne}}.
== Parametry szablonu ({{Strukturyzacja Wizualnego Edytora}}) ==
<templatedata>
{
"params": {
}
}
</templatedata>
== Zobacz też ==
; Szablony szablonów przypisów
* {{s|PrzypisStrona}} - kombajn, z którego mogą być zbudowane inne szablony cytowania w oparciu o szablon: {{Code|{{s|Cytuj}}, i w niej wywołany moduł: {{Code|{{ld2|Cytuj}}}}, a w niej funkcję: {{Code|{{m|Cytuj|custom2}}}}, zbudowaną w oparciu, w języku {{lpg|Lua}} w {{lpr|Lua|Sccribunto}}, o: {{Code|{{m|Cytuj|custom}}}}.
{{BrClear}}
<includeonly><!--
++++ DODAWAJ KATEGORIE PONIŻEJ TEJ LINII -->
{{Kategoria|Szablony podręczników}}
{{#ifeq:{{ROOTPAGENAME}}|PrzypisStrona
|{{Wolumin|Napary}}{{Wolumin|Pszczelarstwo}}
|{{Wolumin|<!--
-->{{#switch:{{Dopasuj|ciąg={{ROOTPAGENAME}}|wzór=^(%a+)%s}}
| Pszcz = Pszczelarstwo
| Ziel = Napary
}}<!--
-->| dokumentacja = tak
| sortuj spacją =
}}}}
</includeonly>
i6nkvp6qz7uiviseahnuk1kthrgbl9j
Szablon:Pszcz IB
10
62218
556511
528230
2026-09-15T07:28:51Z
Persino
2851
556511
wikitext
text/x-wiki
<includeonly>{{#invoke:Ramka|Szablon|Nazwa=PrzypisStrona|adres=https://www.bienenkunde.rlp.de/Internet/global/Themen.nsf/(Web_P_Bienen_Infobrief_XP)|czasopismo=Bienen&Imkerei}}</includeonly><noinclude>{{Dokumentacja|Szablon:PrzypisStrona/opis}}</noinclude>
5647k93ucd7x72k2c72bty3sfoin8nw
Moduł:StronicowyParser/GłównaFunkcjaZbieraniaDanychStron
828
62247
556341
556171
2026-09-14T16:10:06Z
Persino
2851
556341
Scribunto
text/plain
local p={};
function p.PobieranieInformacjiRamkiRozpatrywanejStrony(self)
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.PobieranieInformacjiKorzystanejStronyWrazSkojarzonymi(self)
self.tabela_listy_danych_analizy_ksiazki={};
self.tabela_listy_danych_analizy_ksiazki.dane_analizy_stron={};
local stronicowyparser_obiekty_modul=mw.loadData("Module:StronicowyParser/obiekty");
self.tabela_listy_danych_analizy_ksiazki.problemy=nil;
self.tabela_listy_danych_analizy_ksiazki.licencja={};
local nazwy_modul=require("Module:Nazwy");
local ksiazkowe_modul=require("Module:Książkowe");
local function DaneNazw(pelna_nazwa_strony)
local tabela_nazw={};
local nazwa_przestrzeni=nazwy_modul["NAZWAPRZESTRZENI"](pelna_nazwa_strony,tabela_nazw);
local nazwa_przestrzeni_ksiazki=nazwy_modul["NAZWAPRZESTRZENIKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
local nazwa_ksiazki=(nazwa_przestrzeni_ksiazki~="") and nazwy_modul["SUBNAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw) or nazwy_modul["NAZWAKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
local nazwa_artykulu=nazwy_modul["NAZWAARTYKUŁUKSIĄŻKI"](pelna_nazwa_strony,tabela_nazw);
return nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
end;
local strona_aktualna=ksiazkowe_modul["PełnaNazwaArtykułu"]();
local nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona_aktualna);
local pelna_nazwa_ksiazki=((nazwa_przestrzeni~="")and(nazwa_przestrzeni..":") or "")
..((nazwa_przestrzeni_ksiazki~="")and(nazwa_przestrzeni_ksiazki.."/") or "")
..nazwa_ksiazki;
local pelna_nazwa_ksiazki_ustawienia="Szablon:Podręcznik/Ustawienia/"..pelna_nazwa_ksiazki;
local techniczne_modul=require("Module:Techniczne");
local ile,_=techniczne_modul.PoliczZbiory{[1]=pelna_nazwa_ksiazki_ustawienia.."/config",tekst=true,};
if(ile>0)then
local frame=mw.getCurrentFrame();
local szablonowe_modul=require("Module:Szablonowe");
local nazwa_szablonu=szablonowe_modul.NazwaSzablonu(pelna_nazwa_ksiazki_ustawienia);
local ksiazka=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="książka",}};
local artykul=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="artykuł",}};
if(not mw.ustring.match(ksiazka,"^%s*$"))then
local strona=ksiazka..((artykul~="") and ("/"..artykul) or "");
local pudelko_modul=require("Module:Pudełko");
local czy_strona_niepoprawna=pudelko_modul["CzyNiepoprawnaNazwa"](strona);
if(not czy_strona_niepoprawna)then
local html_modul=require("Module:Html");
strona=html_modul.DecodeHtml(strona,true);
strona=techniczne_modul["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]{[1]=strona,[2]=strona_aktualna,};
local ile,_=techniczne_modul.PoliczZbiory{[1]=strona,tekst=true,};
if(ile>0)then
strona=ksiazkowe_modul["PełnaNazwaArtykułu"](strona);
if(strona~=strona_aktualna)then
local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu;
nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu=DaneNazw(strona);
--local aktualna_nazwa_przestrzeni,aktualna_nazwa_przestrzeni_ksiazki,aktualna_nazwa_ksiazki,aktualna_nazwa_artykulu=DaneNazw(strona_aktualna);
self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni=aktualna_nazwa_przestrzeni;
self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki=aktualna_nazwa_przestrzeni_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki=aktualna_nazwa_ksiazki;
self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu=aktualna_nazwa_artykulu;
if((aktualna_nazwa_przestrzeni~=nazwa_przestrzeni)
or(aktualna_nazwa_przestrzeni_ksiazki~=nazwa_przestrzeni_ksiazki)
or(aktualna_nazwa_ksiazki~=nazwa_ksiazki)
or(aktualna_nazwa_artykulu~=nazwa_artykulu)
)then
local zastepcza=frame:expandTemplate{title=nazwa_szablonu.."/config",args={[1]="zastępcza",}};
local parametry_modul=require("Module:Parametry");
self.tabela_listy_danych_analizy_ksiazki.alternatywna=parametry_modul.CzyTak(zastepcza);
if(not self.tabela_listy_danych_analizy_ksiazki.alternatywna)then
self.tabela_listy_danych_analizy_ksiazki.inna_strona_aktualna_niz_biezaca=true;
end;
end;
end;
end;
end;
end;
end;
local tablica_zmiennych={};
tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2={};
tablica_zmiennych.linkobiekt={};
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local tabela_listy_danych_analizy_ksiazki=stronicowyparser_zbieraniedanychstron_modul.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, true,tablica_zmiennych);
local parametry_modul=require("Module:Parametry");
if(parametry_modul.TypeTable(tabela_listy_danych_analizy_ksiazki))then
local stronicowyparser_numeracjaobiektowstron_modul=require("Module:StronicowyParser/NumeracjaObiektówStron");
stronicowyparser_numeracjaobiektowstron_modul.PrzetwarzanieZebranychInformacjiDanejKorzystanejStrony(self,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu);
end;
return self.tabela_listy_danych_analizy_ksiazki;
end;
function p.SpisRzeczyWedlePodanegoTekstu(self,tekst_artykulu,nazwa_strony,czy_artykul_korzystany, tylko_naglowek,obiekty,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tablica_obiektow_strony_danych_kodow_specjalnych_modul,KtorySzablonMaZwracacKategorie,wzory_zamiast_kodow,tabela_elementow_strony_kodow)
----
local czy_kodowanie=((nazwa_modulu_aktualna_czy_biezaca)or(tablica_analizy_obiektow_strony_dany_modul));
----
if(not nazwa_modulu_aktualna_czy_biezaca)then
if czy_artykul_korzystany then
local nazwa_przestrzeni_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni;
local nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_przestrzeni_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_przestrzeni_woluminu;
local nazwa_ksiazki_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_ksiazki or self.tabela_listy_danych_analizy_ksiazki.nazwa_woluminu;
local nazwa_artykulu_aktualna_czy_biezaca=self.tabela_listy_danych_analizy_ksiazki.alternatywna and self.tabela_listy_danych_analizy_ksiazki.aktualna_nazwa_artykulu or self.tabela_listy_danych_analizy_ksiazki.nazwa_podstrony_woluminu;
local nazwy_modul=require("Module:Nazwy");
nazwa_modulu_aktualna_czy_biezaca=nazwy_modul["NazwaModułu"](nazwa_przestrzeni_aktualna_czy_biezaca,nazwa_przestrzeni_ksiazki_aktualna_czy_biezaca,nazwa_ksiazki_aktualna_czy_biezaca,nazwa_artykulu_aktualna_czy_biezaca);
else
nazwa_modulu_aktualna_czy_biezaca=nazwa_strony;
end;
end;
local html_modul=require("Module:Html");
nazwa_strony=html_modul.EncodeId(nazwa_strony);
-----
local tablica_spisu_tresci=nil;
local stronicowyparser_potrzebne_modul=require("Module:StronicowyParser/Potrzebne");
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
local stronicowyparser_zbieraniedanychstron_modul=require("Module:StronicowyParser/ZbieranieDanychStron");
local szablonowe_modul=require("Module:Szablonowe");
local liczby_modul=require("Module:Liczby");
local nazwa_modulu_aktualna_czy_biezaca_szablonowa=szablonowe_modul["SzablonowaNazwaStrony"](nazwa_modulu_aktualna_czy_biezaca);
local HNumer=stronicowyparser_potrzebne_modul.LiczonyHNumer();
local tablica_powtarzajacych_sie_elementow={};
local elementy_linku=nil;
local frame=mw.getCurrentFrame();
local parametry_modul=require("Module:Parametry");
local techniczne_modul=require("Module:Techniczne");
local html_modul=require("Module:Html");
local szablonowe_potrzebne_modul=require("Module:Szablonowe/Potrzebne");
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_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_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.szablony_stron_zbiorczych;
local tab_szablony_inne_szablony_stron_zbiorczych=stronicowyparser_obiekty_modul.inne_szablony_stron_zbiorczych;
local tab_szablony_strona_start=stronicowyparser_obiekty_modul.szablony_stronicowe_formatowania_tekstu;
----
local tab_szablony_indeksowania=stronicowyparser_obiekty_modul.szablony_indeksowania;
---
local stronicowyparser_rozdzialy_modul=require("Module:StronicowyParser/Rozdziały");
----
if(czy_kodowanie)then
local szablony_sztucznego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_sztucznego_wprowadzenia_tekstu;
local szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_spisu_rzeczy_artykularnego_wprowadzenia_tekstu;
local znaczniki_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.znaczniki_wprowadzenia_tekstu;
local SpecjalneWprowadzeniaTekstu=function(szablon,obiekt,kod,czy_szablon,czy_znacznik,czy_liczyc,funkcja1,funkcja2)
if(czy_szablon)then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_strony,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
local numer_parametru=szablony_sztucznego_wprowadzenia_tekstu[nazwa_szablonu];
if(numer_parametru)then
local parametr=tabela_parametrow_szablonu[numer_parametru];
if(parametr)then
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(parametr);
if(naglowek)then
return funkcja1(parametr);
end;
end;
else
local tabela_nazw={};
local function ParametrNR(numer)
return stronicowyparser_potrzebne_modul.SpisRzeczySzablon(nazwa_szablonu,numer,tabela_parametrow_szablonu,tabela_nazw);
end;
local parametr=ParametrNR(1);
if(parametr)then
if(czy_liczyc)then
local ile_poziom=tonumber(ParametrNR(5)) or 6;
ile_poziom=(ile_poziom>0)and ile_poziom or 1;
ile_poziom=(ile_poziom<=6) and ile_poziom or 6;
local poziom=mw.ustring.rep("=",ile_poziom);
local adres_ksiazki=ParametrNR(2);
local nazwa_modulu_aktualna_czy_biezaca_strony=adres_ksiazki and ParametrNR(2) or nazwa_modulu_aktualna_czy_biezaca;
local adres=nazwa_modulu_aktualna_czy_biezaca_strony..((parametr~="")and ("/"..parametr)or "");
adres=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(adres,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or adres;
adres=html_modul.DecodeHtml(adres,true);
parametr=ParametrNR(3) or parametr;
local dodatek=ParametrNR(4);
parametr=parametr..((dodatek) and (" "..dodatek) or "");
local ile,_=techniczne_modul.PoliczZbiory{[1]=adres,tekst=true,};
local ObiektKodNumer=function(szablon,obiekt)
local tablica_analizy_obiektow_strony_dany_modul_numer=tablica_analizy_obiektow_strony_dany_modul[obiekt];
local kod_numer=1;
for name,_ in pairs(tablica_analizy_obiektow_strony_dany_modul_numer)do
kod_numer=math.max(kod_numer,name);
end;
kod_numer=kod_numer+1;
tablica_analizy_obiektow_strony_dany_modul_numer[kod_numer]=szablon;
local kod_szablonowe=szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod_numer);
return kod_szablonowe;
end;
if(ile>0)then
local parametr=poziom..parametr..poziom;
return funkcja1(parametr);
else
local szablon="<span style=\"color:red;\">"..parametr.."</span>";
local kod_parametr=ObiektKodNumer(szablon,"ZNACZNIK");
local parametr=poziom..kod_parametr..poziom;
return funkcja1(parametr);
end;
else
return funkcja1(parametr);
end;
end;
end;
end);
elseif(czy_znacznik)then
local nazwa,zawartosc,atrybuty=szablonowe_modul.WydzielanieNazwyTekstuOrazOpcjiAtrybutowychZeZnacznika(szablon,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,kod);
if((zawartosc)and(nazwa))then
if(znaczniki_wprowadzenia_tekstu[nazwa])then
return funkcja2(nazwa,zawartosc,atrybuty);
end;
end;
end;
end;
tekst_artykulu=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstuZgodnieZJegoSzablonowymiElementami(tekst_artykulu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,nil,
function(szablon,obiekt,kod)
local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");local czy_wikitabelka=(obiekt=="WIKITABELA");
if((czy_szablon)or(czy_znacznik)or(czy_wikitabelka))then
local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,false,function()return true;end,function()return true;end);
if(wynik)then return true,nil,nil,true;end;
local rozdzial=mw.ustring.match(szablon,"\n(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n");
if(rozdzial)then
local naglowek,poziom=stronicowyparser_rozdzialy_modul.PodajNapisPoziomuWprowadzeniaTekstu(rozdzial);
if(naglowek)then
return true,nil,nil,true;
end;
end;
end;
end,
function(szablon,obiekt,kod)
local czy_szablon=(obiekt=="SZABLON");local czy_znacznik=(obiekt=="ZNACZNIK");
local wynik=SpecjalneWprowadzeniaTekstu(szablon,obiekt,kod,czy_szablon,czy_znacznik,true,
function(parametr)
parametr=mw.ustring.gsub(parametr,"\n"," ");
return "\n"..parametr.."\n ";
end,
function(nazwa,zawartosc,atrybuty)
if((zawartosc)and(nazwa))then
local poziom=stronicowyparser_rozdzialy_modul.HnNumerWprowadzeniaTekstu(nazwa,atrybuty);
zawartosc=mw.ustring.gsub(zawartosc,"\n"," ");
local poziom_rowna=mw.ustring.rep("=",poziom);
return "\n"..poziom_rowna..zawartosc..poziom_rowna.."\n ";
end;
end);
if(wynik)then return wynik;end;
return nil;
end);
end;
local iterator=stronicowyparser_rozdzialy_modul.IterTekst(tekst_artykulu);
local numeracja;
----
local KtorySzablonMaZwracacKategorieNaglowek=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[1] or nil;
local KtorySzablonMaZwracacKategorieTekst=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[2] or nil;
local CzyJestTakiProblemJakoElementTablicy=KtorySzablonMaZwracacKategorie and KtorySzablonMaZwracacKategorie[3] or nil;
----
local function SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,parametry_wywolania_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania)
--local nazwa_szablonu=szablonowe_modul["NazwaSzablonuWywołania"](szablon);
local jest_naglowkuj_w_tekscie_rozdzialu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu_wywolania];
if(jest_naglowkuj_w_tekscie_rozdzialu)then
--local parametry_wywolania_szablonu_naglowek,nazwa_szablonu_wywolania,modyfikatory_wywolania=szablonowe_modul["ParsowanieWywołaniaSzablonu"](szablon,nil,nil,nil,tablica_danych_parametrow_szablonu_strony,kod);
local numeracja_aktualna=parametry_wywolania_szablonu["uchwyt"] or parametry_wywolania_szablonu[1];
----
if(numeracja_aktualna)then
local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1];
local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil;
if(not lista_dwuelementowa)then
numeracja_aktualna=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja_aktualna,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or numeracja_aktualna;
numeracja_aktualna=html_modul.DecodeHtml(numeracja_aktualna,true);
lista_dwuelementowa={};
lista_dwuelementowa[1]=numeracja_aktualna;
else
numeracja_aktualna=lista_dwuelementowa[1];
end;
if(numeracja_aktualna~="")then
table.insert(numeracja,lista_dwuelementowa);
end;
----
if(powtorka>=1)then
if(self.tabela_listy_danych_analizy_ksiazki)then
KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu_wywolania);
end;
end;
elseif(powtorka>=1)then
KtorySzablonMaZwracacKategorieNaglowek(nil,nazwa_szablonu_wywolania);
end;
powtorka=powtorka+1;
end;
return powtorka;
end;
----
local szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu=stronicowyparser_obiekty_modul.szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane.nienumerowane_obiekty_napisu_wprowadzenia_tekstu;
----
local function SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
----
local jest_naglowkuj_w_tekscie_rozdzialu=szablony_obiektowe_z_uchwytami_numerowane_i_nienumerowane_nienumerowane_obiekty_napisu_wprowadzenia_tekstu[nazwa_szablonu];
if(jest_naglowkuj_w_tekscie_rozdzialu)then
local numeracja=tabela_parametrow_szablonu["uchwyt"] or tabela_parametrow_szablonu[1];
if((numeracja)and(numeracja~=""))then
local wartosc_elementu=jest_naglowkuj_w_tekscie_rozdzialu[1];
local lista_dwuelementowa=tabela_elementow_strony_kodow and stronicowyparser_zbieraniedanychstron_modul.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,wartosc_elementu,kod) or nil;
if(not lista_dwuelementowa)then
numeracja=stronicowyparser_potrzebne_modul.DekodowanieNazwySzablonu(numeracja,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,true) or kod_uchwytu;
numeracja=html_modul.DecodeHtml(numeracja,true);
else
numeracja=lista_dwuelementowa[1];
end;
end;
KtorySzablonMaZwracacKategorieTekst(numeracja,nazwa_szablonu);
return true;
end;
return false;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return false;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return false;
end);
end;
return false;
end;
local RefPrzypisowy=function(obiekt,kod)
return "["..((obiekt~="") and (obiekt.." ") or "")..kod.."]";
end;
local specjalne_modul=require("Module:Specjalne");
local nazwa_strony_z_naglowkami=((not tylko_naglowek)and(((nazwa_strony)and(nazwa_strony~=""))and (":"..nazwa_strony) or "") or "");
for naglowek_tab,text_rozdzialu,poziom_rozdzialu in iterator do
local naglowek=naglowek_tab[1];
numeracja={};
if(czy_kodowanie)then
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(text_rozdzialu,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod);
if(wynik)then break;end;
end;
end;
local powtorka=0;
local czy_szablony=nil;
local czy_indeksowanie=nil;
local function SzablonyWywolywane(szablon,obiekt,kod)
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
powtorka=SzablonNaglowkujWNaglowkuRozdzialu(szablon,obiekt,kod,powtorka,tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow);
local czy_naglowek=tab_naglowki[nazwa_szablonu];
local czy_link;local nazwa_link;
local function TempFunc(nazwa_szablonu)
if(not czy_link)then
czy_link=true;
local str=mw.ustring.match(nazwa_szablonu,"^Link")
nazwa_link=str and true or false;
return nazwa_link;
end;
return nazwa_link;
end;
local czy_tak_naglowki=((czy_naglowek)and(TempFunc(nazwa_szablonu)and true or false) or ((not czy_naglowek)and nil));
if((czy_tak_naglowki~=nil)and(czy_tak_naglowki==false))then
return "";
elseif((tab_szablony[nazwa_szablonu])or(tab_szablony_stronicowe_niekontenerowe[nazwa_szablonu])or(tab_szablony_inne_szablony_stron_zbiorczych[nazwa_szablonu])or((czy_tak_naglowki~=nil)and(czy_tak_naglowki==true)))then
czy_szablony=true;
local nazwa_link=TempFunc(nazwa_szablonu);
if((not czy_artykul_korzystany)or(nazwa_link))then
local nazwa_link=TempFunc(nazwa_szablonu);
if(nazwa_link)then
tabela_parametrow_szablonu[2]=tabela_parametrow_szablonu[2] or nazwa_artykulu;
tabela_parametrow_szablonu[3]=tabela_parametrow_szablonu[3] or (((nazwa_przestrzeni_ksiazki~="") and (nazwa_przestrzeni_ksiazki.."/") or "")..nazwa_ksiazki);
end;
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)and((self.tabela_listy_danych_analizy_ksiazki)))then
local czy_link_lub_pobierz;
if(czy_tak_naglowki==nil)then
czy_link_lub_pobierz=mw.ustring.match(nazwa_szablonu,"^Link") or mw.ustring.match(nazwa_szablonu,"^Pobierz");
else
czy_link_lub_pobierz=czy_tak_naglowki or mw.ustring.match(nazwa_szablonu,"^Pobierz");
end;
if(czy_link_lub_pobierz)then
stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca);
else
stronicowyparser_zbieraniedanychstron_modul.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu);
end;
end;
end;
local str=szablonowe_modul.KodSymbolicznySzablonu(nazwa_szablonu,tabela_parametrow_szablonu,tabela_modyfikatorow,true);
return str;
elseif((tab_szablony_strona_start[nazwa_szablonu])or(tab_szablony_szablony_stron_zbiorczych[nazwa_szablonu]))then
return "";
elseif(tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego[nazwa_szablonu])then
local wynik=stronicowyparser_rozdzialy_modul.ObiektySzablonoweFormatowaniaTekstu(szablon,tab_szablony_stronicowe_kontenerowe_formatowania_wzorowego,nazwa_modulu_aktualna_czy_biezaca_szablonowa,tablica_danych_parametrow_szablonu_strony,kod);
if(wynik)then return wynik;end;
elseif((czy_indeksowanie)and(tab_szablony_indeksowania[nazwa_szablonu]))then
return nil,true;
end;
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return szablon;
end,
function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow,szablon,obiekt,kod)
return szablon;
end);
end;
--naglowek,_=mw.ustring.gsub(naglowek,"({{[^{}]+}})",SzablonyWywolywaneOgolny);
--naglowek=mw.ustring.gsub(naglowek,"<ref>.-</ref>","");
--naglowek=Korekta(naglowek);
---naglowek=mw.ustring.gsub(naglowek,"[{}|]",function(s) return "&#"..tostring(mw.ustring.byte(s))..";";end)
local nazwa_rozdzialu_w_artykule;
if(not czy_kodowanie)then
nazwa_rozdzialu_w_artykule,naglowek=specjalne_modul["PrzetwórzNagłówek"](naglowek,true,false);
else
local function SzablonyWywolywaneOgolny(naglowek)
local naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=specjalne_modul["WydzielZwykłyTekst"](
{
tekst=naglowek,
["nagłówek"]=true,
nieklasycznie=true,
kodowanie=false,
["tablica kodowania"]=tablica_analizy_obiektow_strony_dany_modul,
},
function(szablon,obiekt,kod)
local szablon,wynik=SzablonyWywolywane(szablon,obiekt,kod);
return szablon,wynik;
end,
function(szablon,obiekt,kod)
return czy_indeksowanie;
end);
return naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne;
end;
czy_indeksowanie=true;
local Znaczniki;local SzablonyStylowe;local ZnakiSpecjalne;
naglowek,Znaczniki,SzablonyStylowe,ZnakiSpecjalne=SzablonyWywolywaneOgolny(naglowek);
nazwa_rozdzialu_w_artykule=naglowek;
naglowek=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(naglowek,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="SZABLON")then
return szablonowe_modul.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON(szablon,tablica_danych_parametrow_szablonu_strony,kod,nazwa_modulu_aktualna_czy_biezaca_szablonowa,function(tabela_parametrow_szablonu,nazwa_szablonu,tabela_modyfikatorow)
if(tab_szablony_indeksowania[nazwa_szablonu])then return "";end;
end);
elseif(obiekt=="ZNACZNIK")then
szablon=Znaczniki(szablon,"li");
szablon=Znaczniki(szablon,"ol");
szablon=Znaczniki(szablon,"ul");
return szablon;
end;
end);
czy_indeksowanie=false;
nazwa_rozdzialu_w_artykule=szablonowe_modul:KompletowanieSzablonoweZakodowanegoTekstu(nazwa_rozdzialu_w_artykule,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,function(szablon,obiekt,kod)
if(obiekt=="ATRYBUTY")then
return nil,true;
elseif(obiekt=="SZABLON")then
szablon=SzablonyWywolywaneOgolny(szablon);
return szablon;
end;
--szablon=Korekta(szablon);
--szablon=specjalne_modul["UsuńSzablonyStylów"](szablon);
--szablon=specjalne_modul["UsuńZnakiSpecjalne"](szablon);
return szablon;
end);
nazwa_rozdzialu_w_artykule=SzablonyStylowe(nazwa_rozdzialu_w_artykule);
nazwa_rozdzialu_w_artykule=ZnakiSpecjalne(nazwa_rozdzialu_w_artykule);
nazwa_rozdzialu_w_artykule=Znaczniki(nazwa_rozdzialu_w_artykule);
if(not czy_szablony)then
nazwa_rozdzialu_w_artykule=html_modul.DecodeKoduHTMLZnaku(nazwa_rozdzialu_w_artykule);
nazwa_rozdzialu_w_artykule=html_modul.EncodeSpecjalneZnakiHtml(nazwa_rozdzialu_w_artykule);
end;
end;
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"\'\'","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"^[%s_]*","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[%s_]*$","");
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"[_%s]+"," ");
naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)","(%d+)"),function(obiekt,kod)
return "<sup>"..RefPrzypisowy(obiekt,kod).."</sup>";
end);
naglowek=mw.ustring.gsub(naglowek,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod)
if(not wzory_zamiast_kodow)then
return szablonowe_modul[((nazwa_strony)and(nazwa_strony=="")) and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod);
elseif(not czy_artykul_korzystany)then
if(tablica_obiektow_strony_danych_kodow_specjalnych_modul)then
if(tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"])then
local kod=tonumber(kod);
local szablon=tablica_obiektow_strony_danych_kodow_specjalnych_modul["POSTMATH"][kod];
if(szablon)then
szablon=frame:preprocess(szablon);
return szablon;
end;
end;
end
end;
return szablonowe_modul[czy_artykul_korzystany and "NormaKoduKodowaniaTekstu" or "NormaKoduZakodowanegoWikiTekstu"]("postMath",(mw.ustring.rep("0",math.max(8-#kod,0)))..kod);
end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("REF(%a*)"),function(obiekt,kod)
return RefPrzypisowy(obiekt,kod);
end);
nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,szablonowe_modul.NormaWzoruKodowaniaTekstu("POSTMATH"),function(kod)
kod=liczby_modul.LiczbaSzesnastkowaKodyBazySzablonowe(kod);
return szablonowe_modul.NormaKoduZakodowanegoHtmlTekstu("postMath",kod);
end);
--nazwa_rozdzialu_w_artykule=mw.ustring.gsub(nazwa_rozdzialu_w_artykule,"|","&#"..tostring(mw.ustring.byte('|'))..";");
local numer_tego_samego_naglowka=1;
--local nazwa_rozdzialu_w_artykule_p=mw.ustring.lower(nazwa_rozdzialu_w_artykule);
local numer_tego_samego_naglowka=1;
for s=1,#tablica_powtarzajacych_sie_elementow,1 do
local element=tablica_powtarzajacych_sie_elementow[s];
if(element==nazwa_rozdzialu_w_artykule)then
numer_tego_samego_naglowka=numer_tego_samego_naglowka+1;
end;
end;
if(numer_tego_samego_naglowka==1)then
elementy_linku={nazwa_rozdzialu_w_artykule,naglowek};
else
elementy_linku={nazwa_rozdzialu_w_artykule.."_"..numer_tego_samego_naglowka,naglowek};
end;
if((obiekty)and(numeracja))then
for _,value_numeracja in ipairs(numeracja)do
obiekty[#obiekty+1]={value_numeracja,{nazwa_strony_z_naglowkami,elementy_linku[1], elementy_linku[2]}};
end;
end;
if((poziom_rozdzialu or 0)>0)then
local numer_rozdzialu_ustalony=HNumer(poziom_rozdzialu);
tablica_powtarzajacych_sie_elementow[#tablica_powtarzajacych_sie_elementow+1]=nazwa_rozdzialu_w_artykule;
if(tablica_spisu_tresci==nil)then
tablica_spisu_tresci={};
tablica_spisu_tresci.nazwa_strony=nazwa_strony_z_naglowkami;
end;
tablica_spisu_tresci[#tablica_spisu_tresci+1]={elementy_linku,numer_rozdzialu_ustalony};
end;
end;
if(czy_kodowanie)then
if(czy_artykul_korzystany)then
local stronicowyparser_problemy_modul=require("Module:StronicowyParser/Problemy");
if(not CzyJestTakiProblemJakoElementTablicy())then
local linia_poczatkowa=mw.ustring.match(tekst_artykulu,"^[^\n]+");
if((linia_poczatkowa)and((mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*\n*"))
or(mw.ustring.match(linia_poczatkowa,"^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$*")))
)then
return tablica_spisu_tresci;
end;
local tekst_zerowy=mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*\n")
or mw.ustring.match(tekst_artykulu,"^(.-)\n=[^\n]*[^%s=][^\n]*=[^%S\n]*$")
or tekst_artykulu;
local iterator=szablonowe_modul:IteratorSzablonowyZakodowanegoTekstu(tekst_zerowy,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul);
for szablon,obiekt,kod in iterator do
local wynik=SzablonNaglowkujWTekscieRozdzialu(szablon,obiekt,kod);
if(wynik)then break;end;
end;
end;
end;
end;
return tablica_spisu_tresci;
end;
return p;
qu42uucc4m7akqyaqe6uu320m77dvox
Moduł:Sprawdź/dane
828
63576
556491
544078
2026-09-15T06:04:42Z
Persino
2851
556491
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
["zmienna z nazwą szablonu rodzica"]="", -- zmienna ustawiająca nazwę szablonu rodzica;
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
return p;
9so9pprdyrk3aect5jvkdo9wwht7n09
556492
556491
2026-09-15T06:05:53Z
Persino
2851
Anulowano wersję [[Special:Diff/556491|556491]] autorstwa [[Special:Contributions/Persino|Persino]] ([[User talk:Persino|dyskusja]])
556492
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
return p;
l0uonk6zdylhfoo5fi04rzoiv20yco2
556493
556492
2026-09-15T06:13:37Z
Persino
2851
556493
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
["zmienna z nazwą szablonu rodzica"]="",
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
return p;
hqm8j1ei0a2mjzytqjqtmklh6z1tnlw
556494
556493
2026-09-15T06:15:32Z
Persino
2851
556494
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
["zmienna z nazwą szablonu rodzica"]="",
["nazwa szablonu rodzica"]="",
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
return p;
cqm05cpkhlji56u8wdgewqhosbxtyop
556496
556494
2026-09-15T06:21:27Z
Persino
2851
556496
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
return p;
l0uonk6zdylhfoo5fi04rzoiv20yco2
556499
556496
2026-09-15T06:38:06Z
Persino
2851
556499
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
p.tabelka_argumentowa_ramki_szablon={
["nazwa szablonu rodzica"]="txt",
}
return p;
kdu5isrxwz8eqz3yhblqazdu84ut9cx
556518
556499
2026-09-15T07:49:13Z
Persino
2851
556518
Scribunto
text/plain
local p={};
p.tabelka_argumentow_systemowych_funkcji={
["nazwa przestrzeni nazw"]="",
["nazwa jednostki"]="txt",
["typ jednostki"]="txt",
["tytuł przestrzeni nazw"]="",
["tytuł jednostki"]="txt",
["rodzaj jednostki"]="txt",
["strona główna dla dzieci"]="txt",
["strona główna projektu"]="txt",
---- Kategorie błędów;
["usuń dodatkowe informacje"]="",
["usuń ostrzeżenie"]="",
["usuń linkowanie"]="",
["bez dodatkowych sprawdzeń"]="", -- parametr systemowy szablonu do nieuruchamiania tej funkcji;
["dokumentacja"]="", -- parametr używany zamiast: "bez kategorii", "usuń dodatkowe informacje", "usuń ostrzeżenie" i "usuń linkowanie";
["bez kategorii"]="", -- parametr systemowy szablonu, by kategorie się nie pojawiały
---- Koniec kategorii błędów;
};--tabelka powyższa jest tabelką argumentów systemowych tej funkcji tego modułu;
p.tabelka_argumentow_dodatkowych_funkcji={
["dodatkowe parametry"]="", -- dodatkowe parametry w zmiennych po stronie alternatywnych zmiennych (po prawej stronie) dla danych zmiennych
["bez argumentów szablonu"]="", -- zawiera w sobie argumenty szablonu - oddzielone średnikem, których szablon nie może zawierać w wywołaniu;
["dodaj parametry pudełka"]="", -- dodaje parametry funkcji: Ogólne pudełko, modułu Pudełko;
};
p.tabelka_argumentow_systemowych_szablonu={
["nazwij jednostką"]="", -- parametr systemowy funkcji mówiący, czy dowolną jednostkę nazwać po prostu jednostką;
}; -- tabelka powyższa jest tabelką argumentów systemowych szablonu wywołującego tę funkcję tego modułu;
p.tabelka_argumentowa_ramki_szablon={
["nazwa szablonu rodzica"]="txt",
["nazwa szablonu przodka"]="txt",
}
return p;
2b14zr7ksa70vw78ym6zsr3n5k40eui
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom I
4
63902
556289
554340
2026-09-14T12:36:26Z
Persino
2851
/* {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} */
556289
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}}
== {{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.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: {{LzLua|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ą: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji,
* {{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.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości.
Ten tekst jest uzyskany z funkcji: {{LzLua|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: {{LzLua|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ą: {{LzLua|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, on wynosi: {{Code|9}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
204y49h6dgkesdp2mdu01a6o8gkkjol
556290
556289
2026-09-14T12:37:38Z
Persino
2851
/* {{Code|p.NumerSekcjiStrony}} */
556290
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}}
== {{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.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: {{LzLua|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ą: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji,
* {{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.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości.
Ten tekst jest uzyskany z funkcji: {{LzLua|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: {{LzLua|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ą: {{LzLua|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, on wynosi: {{Code|9}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
m6qhddnb32ewhfrr2zfbs18fejaerwz
556354
556290
2026-09-14T18:02:02Z
Persino
2851
556354
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}}
== {{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:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
| 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|id_rozdzialu2}} | _3 = 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.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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji,
| 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|3}} | _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.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości.
Ten tekst jest uzyskany z funkcji: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji.
}}
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony.
| 2 = {{Code|2}} | _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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|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.
| 2 = {{Code|2}} | _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, on wynosi: {{Code|9}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
rpgxhgyjpds94mqzz3deqrvpo58065z
556374
556354
2026-09-14T19:50:37Z
Persino
2851
556374
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}}
== {{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:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
| 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|id_rozdzialu2}} | _3 = 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 kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/}}.
== {{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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji,
| 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|3}} | _3 = 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 przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/}}.
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości.
Ten tekst jest uzyskany z funkcji: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji.
}}
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony.
| 2 = {{Code|2}} | _2 = Identyfikator rozdzialu - domyślna wartość pusta.
}}
=== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony
== {{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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|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.
| 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta.
}}
=== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pwqdb6aht7bq8q7k4qlc5iottgtdbdj
556375
556374
2026-09-14T19:51:24Z
Persino
2851
/* {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} */
556375
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}}
== {{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:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do analizy, do uzyskania pomiędzy dwoma identyfikatorami tekstu,
| 2 = {{Code|id_rozdzialu1}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|id_rozdzialu2}} | _3 = 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 kodu na stronie modułów z przykładami na stronie ich opisów ===
Popatrz na wyniki kodu, w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, w specjalnej ramce w: {{m|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/}}.
== {{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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|frame:preprocess}}), którego chcemy sprawdzić zawartość strony, jeśli istnieje, pomiędzy dwoma {{Code|id}} rozdziałami - funkcja rozwija nazwę strony wwzględem tej funkcji,
| 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta, wtedy tekst jest wyszukiwany od poczatku, do pewnego identyfikatora,
| 3 = {{Code|3}} | _3 = 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 przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/}}.
== {{Code|p.ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} ==
Funkcja zwraca nagłówek (sekcję) rozwinięty, o danym identyfikatorze, na podstawie wydobytego ze strony jego zawartości.
Ten tekst jest uzyskany z funkcji: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki tablicy transportu funkcji.
}}
Parametry ramki funkcji tablicy transportu:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony - funkcja rozwija nazwę strony.
| 2 = {{Code|2}} | _2 = Identyfikator rozdzialu - domyślna wartość pusta.
}}
=== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/}}.
== {{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: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|frame}} | _1 = Tablica ramki funkcji rablicy transportu.
}}
Parametry ramki funkcji tablicy transprotu dziecka rodzica:
{{OpisParametrów
| 1 = {{Code|1}} | _1 = Nazwa strony do analizy (rozwijany funkcją: {{LzLua|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.
| 2 = {{Code|2}} | _2 = Ten rozdział pierwszy, za którym jest wyszukiwany tekst - domyślna wartość pusta.
}}
=== Przykład przy pomocy szablonu z definicją z użytą tą funkcją ===
Popatrz na definicję przykładu, wywołującą w sobie ramkę {{lpg|Lua}} w {{lpr|Lua|Scribunto}} - szablonu: {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
m1x20k5hjqtirq4x4zdx0vi6y1bucna
Wikibooks:Moduły/StronicowyParser/Rozdziały
4
63903
556353
554395
2026-09-14T17:55:39Z
Persino
2851
556353
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}}}},
*** Rozdziały sztucznego napisu wprowadzenia tekstu, dla szablonów takich jak: {{s|HNumer}}, gdzie jego parametr pierwszy, to zwykły anormalny rozdział dodatni równaniowy, nawet z niedozwoloną liczbą równa się po obu stronach,
* 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|p=StronicowyParser/Rozdziały/Tom II}}}}, 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 przeważnie 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 szablonowe jakiegoś spisu podręcznika, potrzebna do analizy adresów: {{Code|./}} lub {{Code|../}}, do rozwijania ich adresów względnych do bezwzględnych. Jest liczona bez nazwy przestrzeni {{Np|Template|link=tak}}, w tej przestrzeni, a w innych z przestrzeniami, a w {{Np|(main)|link=tak}} z dwukropkiem na początku.
==== Zmienne szablonowe rozkładu ich na czynniki pierwsze ====
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _1 = tabela parametrów szablonu.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = Nazwa szablonu.
| 3 = {{Code|tabela_modyfikatorow}} {{Patrz|tabela_modyfikatorow}} | _3 = Tabela jego modyfikatorów.
}}
==== Zmienne znacznikowe: '''{{lpg|HTML}}''' i mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' ====
{{OpisParametrów
| 1 = {{Code|nazwa}} {{Patrz|nazwa}} | _1 = Nazwa znacznika, napisana małymi literami.
| 2 = {{Code|zawartosc}} {{Patrz|zawartosc}} | _2 = Zawartość znacznika, pomiędzy tagami.
| 3 = {{Code|atrybuty}} {{Patrz|atrybuty}} | _3 = Atrybuty znacznika, w tagach.
}}
==== Baza danych wikikodu ====
Tutaj są opisywane funkcje i zmienne, które dotyczą kodowania baz danych wikikodu.
===== Zmienne bazy danych i do nich parametrów =====
{{OpisParametrów
| 1 = {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}} | _1 = 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}}}}.
| 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Tablica kodów bazy: {{Code|{{m|Szablonowe}}}}, generowaną przez funkcję: {{LinkPatrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}}, z modułu: {{Code|{{ld2|Szablonowe/Potrzebne}}}}, i modyfikowane przez inne.
| 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _3 = Tablica parametrów rozłożeń na mniejsze elementy różnych elementów bazy.
}}
===== Inne elementy bazy =====
{{OpisParametrów
| 1 = {{Code|tab_nazwa_spisow_przekierowaniowych}} {{Patrz|tab_nazwa_spisow_przekierowaniowych}} | _1 = 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 ====
{{OpisParametrów
| 1 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _1 = Funkcja, która usuwa elementy w tablicy: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 2 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{Patrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _2 = funkcja, która usuwa elementy, i w ich powiązanych metablicach, w tablicy {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
}}
==== Inne funkcje ====
Inne funkcje używane przez opisywany moduł.
===== Funkcje bazy =====
{{OpisParametrów
| 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} {{Patrz|IteratorSzablonowyZakodowanegoTekstu}} | _1 = Służy on jako iterator po zakodowany elementach, w tym elementach szablonowych, ale też w tym warunkowych,
| 2 = {{Code|{{sr|#p.KodowanieSzablonowegoTekstuZObiektamiWikikodu|p=Szablonowe/Potrzebne}}}}{{Patrz|KodowanieSzablonowegoTekstuZObiektamiWikikodu}} | _2 = 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}},
| 3 = {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{Patrz|NormaWzoruKodowaniaTekstu}} | _3 = 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 =====
{{OpisParametrów
| 1 = {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} {{Patrz|AnalizujLinkSzablonyOrazLinki}} | _1 = Funkcja do analizowania linków zwykłych wewnętrznychi zewnętrznych oraz linków tzw. inteligentnych.
}}
==== Elementy bazy ====
{{OpisParametrów
| 1 = {{Code|obiekt}} {{Patrz|obiekt}} | _1 = Parametr, w postaci łańcucha znakowego typu elementu w kodzie.
| 2 = {{Code|kod}} {{Patrz|kod}} | _2 = 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 ====
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} | _1 = te parametry przedstawiają: nazwę przestrzeni nazw strony, nazwę przestrzeni książki i nazwę ksiązki,
| 2 = {{Code|nazwa_spisu_tresci}} {{Patrz|nazwa_spisu_tresci}} | _2 = 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}}.
== Spis treści ==
Przedstawia funkcje do zbierania informacji o spisach, ale w sferze wstępnej w wersji preanalizowanej, nie tak jak robi moduł: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}, które wykorzystuje ten moduł opisywany, do zbierania informacji o nagłówkach i w nich rozdziałami, z informacjami, które są elementami charakteryzującymi dany artykuł, a nawet rozdział, czyli w tej dokumentacji są te funkcje.
{{Hr}}
{{Kolumny|2|2=
=== {{lru|Moduły/StronicowyParser/Rozdziały/Tom I}} - Operacje na sekcjach ===
Funkcje do uzyskiwania informacji o sekcji, w tym o jej numerze, i jej tekście rozdziału pomiędzy poszczególnymi sekcjami o danych identyfikatorach. One służą w operacjach w skryptach {{lpg|JavaScript}}.
=== {{lru|Moduły/StronicowyParser/Rozdziały/Tom II}} - Tworzenie i wydobywania coś z sekcji ===
Funkcje do analizowania napisów wprowadzenia tekstu z postaci surowej, w tym rozdziały dodatnie, czy nagłówkowe, a nawet według szablonu {{s|HNumer}}. Funkcje tworzące nagłowki o dowolnym poziomie, raz jako nagłówki dodatnie równaniowo, a za innym razem według znaczników nagłówków, albo tylko według znaczników nagłówków. Funkcje są tam od wydzielania z nagłówka samego napisu wprowadzenia tekstu, tzn. jego zawartość. Funkcje wykrywające, czy w nim są rozdziały dodatnie rówaniowo, czy pozycje listy.
=== {{lru|Moduły/StronicowyParser/Rozdziały/Tom III}} - Modyfikacje elementów w celu uzyskania lepszego formatu ===
Funkcje do modyfikacji analizowanej strony do lepszego formatu, by później łatwo dało się ją parsować, by uzyskać pewne, ściśle okreslone elementy informacyjne. One sprawdzają, czy w nich są szablony, które muszą być w spisie, któryś przynajmniej z nich, ale nie zawsze. Funkcje sparwdzające, czy w nich są specjalne obiekty. Czy szablony mają odpowiednie nazwy według szablonów kompletowania. Funkcje usuwające kolejne spacje i dolne myślniki zamieniając je na jedną spacje. Funkcje wydzielające z wnętrza szablonu ich odpowiednią zawartość, według ściśle okreslonej procedury. Funkcje tworzące elementy według wzoru. Fukcje zamieniające znaczniki i szablony, nowej linii i kresek, na kolejno na znaki nowej linii. Funkcje do integracji tekstu.
=== {{lru|Moduły/StronicowyParser/Rozdziały/Tom IV}} - Parsowanie innych linii niż rozdziały dodatnie równaniowo ===
Funkcje do parsowania linii, ale nie linii będących rozdziałem dodatnim równaniowym, za pomocą zwróconej funkcji, która poza ciałem, ale w wiekszej funkcji rodzicu, są zbieranne informacje, o analizowanych liniach, które mogą być rozdziałami, ale nie muszą być, bo niekażda linia jest sekcją w uznaniu fukncji w opisywanym tym module.
=== {{lru|Moduły/StronicowyParser/Rozdziały/Tom V}} - Zbieranie informacji o sekcjach i ich tekstach rozdziałów ===
Funkcje do skladania, upraszczania ich oraz zbierania informacji o rozdziałach i ich tekstach rozdziałów (w tym ich modyfikacji i tworzeniu), i z nimi stowarzyszącymi elementami, jest to robione przy pomocy iteratora, który analizuje poszczególne sekcje, wraz z ich informacjami.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9ity2pvpdnv9qa4z6c0bxo3ghtqh38t
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom II
4
63904
556291
554400
2026-09-14T12:49:58Z
Persino
2851
/* {{Code|p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu}} */
556291
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ozcw1h1rm3le0losegn2hoz8h5oanbd
556292
556291
2026-09-14T12:52:07Z
Persino
2851
/* {{Code|p.WierszHNumer}} */
556292
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, fukcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hxdt8p7unpkmqdctinvlu3xdzis6qlv
556293
556292
2026-09-14T12:52:35Z
Persino
2851
/* {{Code|p.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} */
556293
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sl5dh2l31jmw99xuedi5oct06egkfcb
556294
556293
2026-09-14T12:58:38Z
Persino
2851
/* {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} */
556294
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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;
---- Początek wydzielania poszczególnych linii;
...
---- Jego koniec;
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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ru0k8fzaeimyswcyoke5nsqxi6rag0s
556295
556294
2026-09-14T13:01:29Z
Persino
2851
/* {{Code|p.CzyZerowyNapisWprowadzeniaTekstu}} */
556295
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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(linia,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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o0fs9d2ryj6id5s9t9ymls7914jpp8v
556296
556295
2026-09-14T13:02:46Z
Persino
2851
/* {{Code|p.NumeracjaOrazTekstWprowadzeniaTekstu}} */
556296
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}}
== {{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.
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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} - tekst zawartości pierwszego parametru wspomnianego szablonu,
* {{Code|zawartość}} {{Patrz|zawartosc}} - zawartość elementu kodu,
* {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} - jaki to jest obiekt, np. {{Code|ZNACZNIK}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod danego obiektu.
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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|StronicowyParser/Rozdziały}} - 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, jak w: {{LinkPatrz|zawartosc}}, 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, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
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).
Wartość zwraca:
* Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}.
* Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}.
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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.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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
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(linia,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: {{Code|z_parametrami_linkowymi}} {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki,
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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.
Funkcja jest 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 nim 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, jak w: {{LinkPatrz|zawartosc}}.
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ib0o4zdx52wnb0isk4hy7dto0z1wq8g
556355
556296
2026-09-14T18:20:08Z
Persino
2851
556355
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}}
== {{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.
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:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Tekst wnętrza rozdziału.
| 2 = {{Code|poziom}} | _2 = 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|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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:
{{OpisParametrów
| 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst zawartości pierwszego parametru wspomnianego szablonu.
| 2 = {{Code|zawartość}} {{Patrz|zawartosc}} | _2 = Zawartość elementu kodu.
| 3 = {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} | _3 = Jaki to jest obiekt, np. {{Code|ZNACZNIK}}.
| 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod danego obiektu.
}}
Funkcja wykorzystuje do swojego liczenia instrukcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, aby policzyć kod pewnego elementu mając zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, 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:
{{OpisParametrów
| 1 = {{Code|parametr}} | _1 = 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 {{lpg|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 '''{{NS|k=mw|l=tak|w=tak}}''', 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ą: {{LzLua|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:
{{OpisParametrów
| 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = 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:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = 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:
{{OpisParametrów
| 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, 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:
{{OpisParametrów
| 1 = {{Code|zawartosc}} | _1 = Tekst, jak w: {{LinkPatrz|zawartosc}}, 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 dodatniej równaniowej lub nagłówków w postaci znaczników: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}.
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyToJestNapisWprowadzeniaTekstu(wiersz)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|wiersz}} | _1 = 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).
Wartość zwracana:
{{OpisParametrów
| 1 = Czy takie dopasowanie znaleziono, możliwe wartości: {{Code|true/false}}. | komórka1 = tak
| 2 = Czy jest to rozdział dodatni równaniowy, wtedy {{Code|true}}, przeciwnie {{Code|false}}. | komórka2 = tak
}}
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 znaki nowych linii, zamieniając w nich po kolei na spację, i dodaje z lewej (przed znacznikiem) i prawej (po) stronie tego nagłówka znak nowej linii: {{Code|\n}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WierszHNumer(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = 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.RozdzieleniePrawidloweLiniiWeWprowadzenieTekstuNumeracjiOdJegoNapisu}} ==
Mając napis rozdziału wraz z numeracją, funkcja liczy właściwy napis i numerację w osobnych po kolei parametrach.
Funkcja jest 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:
{{OpisParametrów
| 1 = {{Code|rozdzial_z_numeracja}} | _1 = Rozdzial z numeracją lub bez.
}}
Zwracane wartości:
{{OpisParametrów
| 1 = {{Code|rozdzial}} | _1 = Rozdzial bez numeracji,
| 2 = {{Code|numetracja}} | _2 = 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.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:
{{OpisParametrów
| 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Rozważana zakodowana linia, która może być rozdziałem zerowym, ale ona nie może być dodatnia, ani ujemna,
| 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
}}
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(linia,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: {{Code|z_parametrami_linkowymi}} {{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:
{{OpisParametrów
| 1 = {{Code|przedrotek_listy}} {{Patrz|przedrotek_listy}} | _1 = Przedrostek listy z linią {{Code|linia}}.
| 2 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _2 = Linia bez przedrostka.
| 3 = {{Code|z_parametrami_linkowymi}} {{Patrz|z_parametrami_linkowymi}} | _3 = 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.
| 4 = {{Code|nazwa_przestrzeni}} | _4 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, i {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}} - parametry nazw książki.
| 5 = {{Code|nazwa_spisu_tresci}} | _5 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}.
| 6 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _6 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 9 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _9 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
}}
Funckja wykorzustuje: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|NormaWzoruKodowaniaTekstu|StronicowyParser/Rozdziały}}, {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}, i {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}} - jak w: {{LinkPatrz|AnalizujLinkSzablonyOrazLinki|StronicowyParser/Rozdziały}}.
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}}.
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:
{{OpisParametrów
| 1 = {{Code|nazwa}} | _1 = Nazwa tagu typu {{Tag|h<numer>}}, gdzie: {{Code|<nowiki>0 < numer < 7</nowiki>}}.
| 2 = {{Code|atrybuty}} | _2 = 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.
Funkcja jest 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 nim 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:
{{OpisParametrów
| 1 = {{Code|zawartosc}} | _1 = Zawartość rozdziału, jak w: {{LinkPatrz|zawartosc}}.
}}
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>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4avc03trs6pf9xtnespieng7ayquglk
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom III
4
63905
556297
551352
2026-09-14T13:05:58Z
Persino
2851
/* {{Code|p.CzyJestInnySpecjalnyTekstowyObiekt}} */
556297
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}}
== {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}},
* {{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|StronicowyParser/Rozdziały}}, 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 dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł 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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}}.
== {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, 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.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.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 {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}:
<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}}}} {{LinkPatrz|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|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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>
3o8lj8k12c5f0omu30ell0p88wtyod1
556298
556297
2026-09-14T13:06:45Z
Persino
2851
/* {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{Code|p.__FUNKCJA_KOMPLETOWANIA}} */
556298
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}}
== {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}},
* {{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|StronicowyParser/Rozdziały}}, 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 dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł 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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}}.
== {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{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, któremu 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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, 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.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.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 {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}:
<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}}}} {{LinkPatrz|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|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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>
3dm78ahncxult2k54w26czah1fs21tw
556299
556298
2026-09-14T13:09:10Z
Persino
2851
/* {{Code|p.ObiektySzablonoweFormatowaniaTekstu}} */
556299
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}}
== {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}},
* {{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|StronicowyParser/Rozdziały}}, 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 dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł 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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}}.
== {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{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, któremu 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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, 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.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.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 {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}:
<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}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją.
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|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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>
i63g2qrcroy9k7p8m2itngp8op4jatr
556300
556299
2026-09-14T13:10:34Z
Persino
2851
/* {{Code|p.ObiektySzablonoweUzyskiwaniaUruchomieniaTekstu}} */
556300
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}}
== {{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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
Funkcja wykorzystuje:
* {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}},
* {{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|StronicowyParser/Rozdziały}}, 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 dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł 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|StronicowyParser/Rozdziały}} - 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|StronicowyParser/Rozdziały}}.
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}}.
== {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{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, któremu 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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_szablonu}} - jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
* {{Code|tabela_modyfikatorow}} - jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, 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.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.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 {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}:
<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}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją.
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|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
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|<nowiki>$(<name>)</nowiki>}}. 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|StronicowyParser/Rozdziały}} - zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}},
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} - kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}} - zakodowany tekst, na którym operujemy,
* {{Code|nazwa_modulu}} - jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}},
* {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} - jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
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>
n7yum0yxlvnt883eo1q9mrjd3j0atu5
556356
556300
2026-09-14T18:32:42Z
Persino
2851
556356
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}}
== {{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:
{{OpisParametrów
| 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do sprawdzenia, czy zawiera zakodowane linki artykularne, w postaci szablonów.
| 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
}}
Funkcja wykorzystuje:
{{OpisParametrów
| 1 = {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} | _1 = Jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
| 2 = {{Code|{{sr|#p.PodzielNaElementyNazwowyWikiLinkInteligentny|p=Szablonowe}}}} | _2 = 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|StronicowyParser/Rozdziały}}, 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 dokumentacji: '''{{sr|Szablonowe|Parsera ogólnych reguł 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:
{{OpisParametrów
| 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Tekst do policzenia, zawierające elementy z omawianymi kodami.
| 2 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _2 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
}}
Funkcja używa iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}} - jak w: {{LinkPatrz|IteratorSzablonowyZakodowanegoTekstu|StronicowyParser/Rozdziały}}.
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|StronicowyParser/Rozdziały}}.
== {{Śródtytuł|p.__FUNKCJA_KOMPLETOWANIA}}{{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, któremu 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:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}},
| 2 = {{Code|nazwa_szablonu}} | _2 = Jak w: {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}},
| 3 = {{Code|tabela_modyfikatorow}} | _3 = Jak w: {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}},
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
| 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla jego typu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, 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.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:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = 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.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 {{Patrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}:
<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}}}} {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}}.
Funkcja zwraca zawartości właśnie tych kolejnych parametrów, jeśli w szablonie istnieją.
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:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Szablon, który chcemy zastąpić odpowiednimi, nie wszystkimi, jego parametrami.
| 2 = {{Code|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu}} | _2 = Tabela informująca, które parametry szablonu należy zastąpić parametrami, tutaj parametry są oddzielone średnikami.
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} |_3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 5 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _5 = Kod, dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, będący jednocześnie częścią kodów bazy, czyli: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
}}
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|<nowiki>$(<name>)</nowiki>}}. 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:
{{OpisParametrów
| 1 = {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} | _1 = Zakodowany szablon, z możliwym dodatkiem, w nazwie szablonu.
| 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 3 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _3 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 4 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}} | _4 = Kod dla obiektu {{Code|SZABLON}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
}}
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:
{{OpisParametrów
| 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy.
| 2 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _2 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 5 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} |_5 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}.
| 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
}}
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:
{{OpisParametrów
| 1 = {{Code|tekst}} {{LinkPatrz|tekst|StronicowyParser/Rozdziały}} | _1 = Zakodowany tekst, na którym operujemy.
| 2 = {{Code|nazwa_modulu}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu|StronicowyParser/Rozdziały}}.
| 3 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _3 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 4 = {{Code|tablica_obiektow_strony_dany_modul_uzyskany}} | _4 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 5 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _5 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 6 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} | _6 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}.
| 7 = {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} | _7 = Jak w: {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
}}
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>
irbpjh8lojoq81zqzgpiqx9bc5vlvsn
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom IV
4
63906
556301
554401
2026-09-14T13:14:35Z
Persino
2851
/* {{Code|p.ParserPodawaniaNapisuWprowadzeniaTekstu}} */
556301
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracanajest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
knzhqidltrc75jmd16mzue0mieaasis
556302
556301
2026-09-14T13:16:36Z
Persino
2851
/* Szablony linków wewnętrznych artykularne tworzące spis rzeczy szablonowe */
556302
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracanajest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bdcmrj1lctbdh2rzb1ngml9416w1l7d
556303
556302
2026-09-14T13:20:09Z
Persino
2851
/* {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} */
556303
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy występują te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cl7pk02c0nxcduy3tq6shi4as420dvu
556304
556303
2026-09-14T13:21:40Z
Persino
2851
/* {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} */
556304
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sgvl4zqg7k1ym3fhsksj41pmyms6el9
556305
556304
2026-09-14T13:22:48Z
Persino
2851
/* {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} */
556305
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w lini{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
irealfx27dj444o6jg3fwcxikiqap11
556306
556305
2026-09-14T13:27:53Z
Persino
2851
/* Brak numeracji rozdziału */
556306
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdzial}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7rt75j7za8twqn3z1mxrzxsj4lqiisb
556307
556306
2026-09-14T13:29:48Z
Persino
2851
/* Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list */
556307
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, któr zwraca fukcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0mlg248yu11v8g2pbeo3u5noyvc1o1j
556308
556307
2026-09-14T13:31:27Z
Persino
2851
/* Iterator po zawartości tekstu linii prawdopodobnego rozdziału */
556308
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z mozliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
8e0bk3f9tp8ub36gr2kwa9bfsuth60n
556309
556308
2026-09-14T13:32:41Z
Persino
2851
/* Możliwe operacje robione przez funkcję iteratora */
556309
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są nepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest zero, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znakow iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
gell8ho7unr452kpk1a3c96d1lh8l51
556310
556309
2026-09-14T13:40:47Z
Persino
2851
/* Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział */
556310
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
dp0t2zvtrkhyyx682j15sxel0kal099
556311
556310
2026-09-14T13:46:30Z
Persino
2851
/* Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział */
556311
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
q41xd1ie5sl4cq011raafkojw7fntg7
556312
556311
2026-09-14T13:48:35Z
Persino
2851
/* Rozdziały centrowane */
556312
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku est zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ntaogwzg4ju79jjahcqcrbph29x4ta9
556313
556312
2026-09-14T13:49:00Z
Persino
2851
/* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */
556313
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
flynrwj9ths29odlv215dzoe80fltlt
556314
556313
2026-09-14T13:50:12Z
Persino
2851
/* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */
556314
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Gddy rozdział inumeracja nie istnieją lub są puste, wtedy funkcja zwraca wartość {{Code|nil}}.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
oa4ytopjodcjdby4jwx3mfqwqfzlicw
556315
556314
2026-09-14T13:51:03Z
Persino
2851
/* Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} */
556315
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
flynrwj9ths29odlv215dzoe80fltlt
556316
556315
2026-09-14T13:53:01Z
Persino
2851
/* Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału */
556316
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Gdy rozdział i numeracja nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość:
<syntaxhighlight lang="lua">
return nil;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7ua6t5oo4r8qw1cvlvnq1bp21wn63kv
556317
556316
2026-09-14T14:02:53Z
Persino
2851
/* Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału */
556317
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}}
== {{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.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|StronicowyParser/Rozdziały}},
* {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}},
* {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|pelna_nazwa_spisu_tresci_szablonowa}} - jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}
* {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
Parametry funkcji zwracanej:
* {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} - linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
* {{Code|tak_ce_spis_tresci}} {{Patrz|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}} {{Patrz|linia_temp}} - rozważana linia,
* {{Code|nazwa_rozdzialu}} {{Patrz|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}} {{Patrz|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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}},
* {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} - początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}},
* {{Code|numeracja_rozdzialu}} {{Patrz|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}} {{Patrz|czy_rozdzial_centrowany}} - czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
9tzarle8xgz2v5rqfpytobh0jpy30fa
556357
556317
2026-09-14T18:38:38Z
Persino
2851
556357
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}}
== {{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.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:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}} | _1 = Jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}.
| 2 = {{Code|nazwa_przestrzeni_ksiazki}} | _2 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}.
| 3 = {{Code|nazwa_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}.
| 4 = {{Code|nazwa_spisu_tresci}} | _4 = Jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}}.
| 5 = {{Code|pelna_nazwa_spisu_tresci_szablonowa}} | _5 = Jak w: {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}.
| 6 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _6 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 7 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _7 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}.
| 8 = {{Code|tab_nazwa_spisow_przekierowaniowych}} | _8 = Jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}}.
}}
Parametry funkcji zwracanej:
{{OpisParametrów
| 1 = {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} | _1 = Linia zakodowana do rozważenia bez rozdziałów dodatnich, aby sprawdzić, czy to jest rozdział,
| 2 = {{Code|tak_ce_spis_tresci}} {{Patrz|tak_ce_spis_tresci}} | _2 = 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ść:
{{OpisParametrów
| 1 = {{Code|linia_temp}} {{Patrz|linia_temp}} | _1 = Rozważana linia.
| 2 = {{Code|nazwa_rozdzialu}} {{Patrz|nazwa_rozdzialu}} | _2 = 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.
| 3 = {{Code|poziom_rozdziału}} {{Patrz|poziom_rozdziału}} | _3 = 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>}} {{Patrz|mw-hnumber-<number>}} dla: {{Code|<nowiki><h6></nowiki>}}.
| 4 = {{Code|poczatek_rozdzialu}} {{Patrz|poczatek_rozdzialu}} | _4 = Początek rozdziału, początek rozdziału to jest przedrostek listy, czyli znaki: {{Code|<nowiki>[;%*:#]</nowiki>}}.
| 5 = {{Code|numeracja_rozdzialu}} {{Patrz|numeracja_rozdzialu}} | _5 = Numeracja rozdziału, to są numerki oddzielone od siebie kropką, na końcu tegomoże być ona, ale nie musi.
| 6 = {{Code|czy_rozdzial_centrowany}} {{Patrz|czy_rozdzial_centrowany}} | _6 = Czy rozdział napisany jako szablonowo lub znacznikowo, jeśli jest 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>
=== Wartości początkowe przyjmowane przez funkcję ===
Wartością początkową przyjmowaną jedyną jest zmienna {{Patrz|maksymalny_rozmiar_rozdzialu_zerowego}}:
<syntaxhighlight lang="lua">
local maksymalny_rozmiar_rozdzialu_zerowego=70;
</syntaxhighlight>
Ona mówi, jaką szerokość może mieć maksymalną rozdział zerowy, czy nawet ujemny, aby został uznany za prawdziwy rozdział.
Reszta zmiennych przyjmuje wartości poczatkowe, jako nilowe, jak to jest przy deklaracji zmiennych w {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== 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 zdefiniowane 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|StronicowyParser/Rozdziały/Tom III}}.
===== 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|StronicowyParser/Rozdziały/Tom III}}.
==== Znaczniki wprowadzenia tekstu ====
Ta tablica: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, 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}} =====
====== Pierwszy przypadek ======
* Funkcja wyszukuje, czy rozdział jest pomiędzy cudzysłowami, a jeżeli nie, to zwraca {{Code|false}}, lub idzie dalej.
====== Druga sytuacja ======
; Przypadek nieprawidłowości{{dk}}
* W innym wypadku sprawdzamy dalej, jeżeli rozdział pasuje do tego, że on składa się z samych dużych liter z możliwymi odstępami.
* Lub 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.
; Zwracana wartość{{dk}}
* W przypadku sukcesu dopasowań warunku alternatywy, funkcja zrzuca wartość fałszu, a jeżeli nie, to prawdy.
===== {{Śródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}{{Code|WykluczenieNieodpowiednichNormSzablonowych}} =====
Funkcja zwraca {{Code|true}}, gdy dało się wykluczyć nieodpowiednie norm szablonowe, w przeciwnym wypadku {{Code|nil}}, to ostatnie właśnie to jest zwracane, gdy obiekt szablonowy jest z kodem o obiektami: {{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órego nazwy pasują do nazw kluczy tabeli: {{LinkPatrz|p.szablony_nieodpowiednie_napisu_wprowadzenia_tekstu_centrowanego}}.
===== {{Śródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}{{Code|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}} =====
Funkcja słuzy do rewidowania zawartości szablonu, ukrytą pod pewnym parametrem, czy znacznika, oczywiście centrowania, czy ona jest: {{Code|<nowiki>^%s*%d+%s*/%s*%d+%</nowiki>}} (czyli rozdziały składające się z dwóch liczb oddzielonych prawym ukośnikiem), a jeśli nie, to czy: {{Code|<nowiki>!%s*'*%s*$</nowiki>}} (na końcu przed ewentualnie cudzysłowem znajduje się wykrzyknik), w takich przypadkach zawsze zwracana jest wartość {{Code|nil}}, jeżeli się funkcja zakańcza, jeżeli sprawdzenie przeszło pomyślnie.
Jeśli ona się nie zakończyła przedwcześnie, wtedy liczy zmienne, tutaj nielokalne, rozdział {{Code|rozdzial}} i numerację {{Code|numeracja}} z: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}} {{Patrz|p.NumeracjaOrazTekstWprowadzeniaTekstu}} ze zmiennej testowej, ktorą jest pojedyncza linia bez znaków listy, a jeżeli tak z policzonego ze zmiennej rozdziału, funkcja: {{LinkŚródtytuł|WykluczenieNieodpowiednichNormSzablonowych}}, nie wyklucza niczgo, tzn. zaprzeczenie zwrócone przez tą funkcję przyjmuje wartość prawdziwą - czyli w tekście sprawdzamy, czy występują tam te specjalne znaki, wtedy zmienne: {{Code|numeracja}} i {{Code|rozdział}}, są przyrównywane do wartości {{Code|nil}}, przeciwnym wypadku funkcja nic nie robi.
===== {{Śródtytuł|NiestardardoweSzablonoweWprowdzeniaTekstu}}{{Code|NiestardardoweSzablonoweWprowdzeniaTekstu}} =====
Funkcja sprawdza zawartość szablonu jakiegoś centrowania. Funkcja rewiduje, czy nazwa tego szablonu, czy jest rzeczywiście szablonem centrowania według tabeli: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy}}, a jeżeli tak, z tej tabeli jest liczony klucz zmiennej jego zawartości tabeli parametrów szablonow, pod którym jest ukryta jego zawartość liczona z tabeli parametrów szablonu, co ta zawartość jest sprawdzana później przez funkcję: {{LinkŚródtytuł|FunkcjaRewidowaniaNiestandardowegoNapisuWprowadzeniaTekstu}}, która możliwie niluje odpowiednio dwie zmienne, jeżeli zajdzie taka potrzeba.
===== {{Ś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}}, ale też dla znaczników wprowadzenia tekstu opisywanych przez tabelę: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Początek (znaki specjalne początku pozycji listy) i rozdział z możliwą numeracją ====
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.
==== Badanie, jaki to jest rozdział ====
===== Rozdział zerowy =====
====== Istnienie rozdziału z numeracją ======
* Jeżeli to dało się wyodrębnić rozdział {{ZobaczTeż|rozdział}} z numeracją, to przyjmujemy, że zmienna {{Code|poczatek}} jest równa ciągowi znakowemu pustemu, a z tego usuwamy znaki specjalne dzięki {{Code|{{sr|#p["UsuńZnakiSpecjalne"]|p=Specjalne}}}}, dalej są usuwane odstępy z początku i końca tego czegoś i na podstawie tego jest wyznaczany {{Code|rozdział}} i {{Code|numeracja}} z tak uzyskanemu szeregu.
====== Brak numeracji rozdziału ======
Określimy tutaj sytuację braku numeracji rozdziału.
* Wykryta linia cudzysłowu{{dk}}
*: 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 {{Code|rozdział}} jest równy linii, a {{Code|poczatek}} i {{Code|numeracja}} są równe ciągowi pustemu.
* Wykryta linia bez cudzysłowów - adresu URL w linii{{dk}}
*: Sprawdzamy, czy któreś z poszczególnych ciągów będących czarnymi znakami są adresami z {{Strong|URL}}, a jeżeli tak, to wtedy są tak samo inicjowane zmienne, jak w przypadku poprzednim.
===== Rozdział będący rozdziałem pozycji listy (rozdział niezerowy) z pewnym początkiem charakterystycznym dla list =====
Gdy jednak linia ma poczatek pozycji listy, to wtedy to samo robimy, co w {{LinkZobaczTeż|rozdział}}, tylko bez znaków początku pozycji listy, która nic nie robimy, rozdzielając na dwa łańcuchy znaków, tzn. {{Code|rozdział}} i {{Code|numeracja}}.
==== Uzyskany istniejący rozdział ====
Jeżeli uzyskamy rozdział istnieje, to zmienna {{Code|ze_specialnymi_obiektami}} {{Patrz|ze_specialnymi_obiektami}} przyjmuje wartość {{Code|true}}, a zmienna {{Code|tekst}} jest równa uzyskanemu rozdziałowi bez numeracji, w przeciwnym wypadku jest równy linii {{Code|linia}} podanemu do funkcji.
==== Iterator po zawartości tekstu linii prawdopodobnego rozdziału ====
Uruchamiamy iterator: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, który zwraca funkcję iteratora po zmiennej {{Code|tekst}} z pierwszą funkcją, która powoduje, że ona jak zwróci wartość {{Code|nil}}, to natychmiast się zakańcza, lub to robi po zakończeniu zasobów danych.
===== Możliwe operacje robione przez funkcję iteratora =====
Funkcja dopuszcza rozdziały z pozycją listy, poczatek linii ma znaki listy tzn. {{Code|<nowiki>[%*#;:]</nowiki>}}, wtedy mamy doczynienia z możliwy rozdziałem ujemnym, ale to nie musi byc rzeczywiście rozdziałem, linia nie musi być częścią listy, wtedy mamy rozdział z możliwą numeracją, ale z drugiej strony w tych dwóch poprzednich wypadkach, nawet numeracji nie musi być, aby był przez tą funkcją zwracaną, uznanym, że to może być rozdział, albo normalną linią.
====== Obiekt szablon, czyli typu SZABLON ======
W tej funkcji sprawdzamy też obiekt: {{Code|SZABLON}}, przy pomocy funkcji: {{Code|{{sr|#p.UzyskanieWynikuZOperacjiSzablonowychNaSzablonachZnacznikachParserachZmiennychOrazModyfikatorachZDanychObiektuSZABLON|p=Szablonowe}}}}, dla szablonów centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, tabelą {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}:
; Szablony rozdziałów szablonowe{{dk}}
* Wtedy ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{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}}.
; Szablony linków{{dk}}
* A dla szablonów będących linkami sprawdzamy za pomocą kluczy w tabelach: {{Code|{{sr|#p.linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}} i {{Code|{{sr|#p.inne_linki_szablony_elementy_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.inne_linki_szablony_elementy_spisu_rzeczy|StronicowyParser/Rozdziały/Tom III}}, 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}}.
; Wartość zwracana{{dk}}
A wiec wtedy na podstawie tych powyższych przypadków, funkcja iteratorze zwraca wartość domyślnie nilową, a więc wtedy przy uruchomieniu tego iteratora pętla się zatrzymuje.
====== Obiekty znacznikowe '''HTML''', czyli typu ZNACZNIK ======
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: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
; Pierwszy przypadek sprawdzania{{dk}}
* W tym pierwwszym ustawiamy zmienne: {{Code|ze_specialnymi_obiektami}} {{LinkPatrz|ze_specialnymi_obiektami}} i {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}}, na wartość {{Code|true}}, i zwracamy do funkcji w iteratorze wartość {{Code|nil}}.
; Drugi przypadek (ciąg dalszy){{dk}}
* A w tym drugim wypadku zmienna: {{LinkPatrz|ze_specialnymi_obiektami}}, przyjmuje wartość {{Code|true}}, a: {{Code|czy_znaczniki_hn}} {{Patrz|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}}.
====== Linki wewnętrzne i zewnętrzne ======
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 inicjowane jak tam.
==== Wartości zwracane, przez funkcję iteratora zwracanej przez funkcję główną, w przypadku wykrycia rozdziału ====
Funkcja, gdy nie wykryła rozdziału, to zwraca wartość {{Code|nil}}, w przypadku jego rozpoznania, mamy coś w rozdziaju {{Patrz|procedura zwracania ogólnie wartości}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja,czy_centrowany_rozdzial;
</syntaxhighlight>
Parametry zwracane przez funkcję zwracaną:
* {{Code|linia}} - rozwarzana linia zwracana przez funkcję,
* {{Code|rozdzial}} - wyodrębiony rozdział, bez początku listy i numeracji,
* {{Code|(#poczatek*(-1))}} - ogólnie dla rozdziałów ujemnych lub zerowych, lub ogólniej: {{Code|numer_rozdziału_wartosc_ujemna_lub_dodatnia}} - numer rozdziału dodatniego, ujemnego, czy zerowego, jeżeli w ogóle ona jest rozdziałem, generowanym przez daną linię,
* {{Code|poczatek}} - znaki początka listy, lub {{Code|nil}},
* {{Code|numeracja}} - numeracja rozdziału, znajdująca się na samym jej poczatku, w przypadku pozycji listy, tuz za tymi znakami,
* {{Code|czy_centrowany_rozdzial}} - zwracane wartości {{Code|true/nil}}, wartość prawdziwą, gdy wykryto rozdział centrowany szablonowo, czy znaczniowo, przeciwnym wypadku jest zwracana wartość {{Code|nil}}.
Funkcja na wiele sposobów może wskazywać, czy rozdział niedodatni jest rozdziałem, lub zwracać wartość {{Code|nil}}, gdy jest tylko zwykłą linią, a nie rozdziałem w żadnym wypadku. W przypadku rozdziałów dodatnich równaniowych, one są zawsze rozdziałami, ale to nie jest kwestią tej funkcji, ale za to jest dla rozdziałów centrowanych znacznikowych lub szablonowych, one nie zawsze są rozdziałami, czasami są zwykłym tekstem, bo nie należy do spisu, albo ma dziwną zawartość. A w przypadku rozdziałów nagłówkowych generowanych przez znaczniki typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jeżeli zawierają zawartość niepustą, to są rozdziałami dodatnimi ({{Code|<nowiki>numer_rozdziału_wartosc_ujemna_lub_dodatnia > 0</nowiki>}}), wykrywane przez tą funkcję, jako nierównaniowe.
===== Brak obiektów specjalnych linii, które sugerują, że to nie jest jednak rozdział =====
Jeżeli ustawiony nie został parametr przez wcześniejsze wykonywanie iteracji parametr {{Code|ze_specialnymi_obiektami}} na wartość {{Code|true}}, gdy przed iteracją parametr {{Code|rozdział}} istniał, jeśli nie, wtedy wchodzimy do pierwszego rozkłazienia funkcji iteratora dla danej rozważanej linii.
Funkcja sprawdza, czy to jest rozdział zerowy przy użyciu funkcji {{Code|{{sr|#p.CzyZerowyNapisWprowadzeniaTekstu|b=tak}}}} w ten sposób otrzymamy zmienną rozdziału, jak to na pewno jest rozdziałem możliwym zerowym bez dalszych sprawdzeń. Funkcja następnie też rewiduje, czy ona posiada nieprzekroczoną liczbę z maksimum znaków, określonej przez zmienną {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Funkcja, jeżeli weszła w ten krok instrukcji warunkowej, w takich przypadkach może zwrócić informację w zależności od jej definicji, że to jest jednak taki rozdział w odpowiedni sposób, w przeciwnym wypadku zwraca informację w postaci wartości nilowej, że jednak nim nie jest, czyli jest to zwykła linia tekstowa, a nie rozdział zerowy, jak przypuszczaliśmy.
W przypadku pozytywnego rozeznania jest sprawdzene, czy rozdział przed cudzysłowem końcy się na znaki iterpunkcyjne, w języku polskim, a jeżeli nie, to funkcja zwraca wartość {{Patrz|bez obiektów zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,0,nil,numeracja;
</syntaxhighlight>
Gdy nie jest spełniony faktyczny rozmiar rozdziaału zerowego, wtedy sprawdzane jest, czy wartości zmiennych {{Code|poczatek}} i {{Code|numeracja}}, czy są niepuste. A gdy nie ma początku, lub jest, ale jest on pusty, oraz jednocześnie, nie ma numeracji, lub numeracja jest pusta, wtedy funkcja iteratora zwraca {{Code|nil}}. Przeciwnie, jeśli przed cudzysłowem nie ma znaków iterpunkcyjnych, funkcja zwraca podobny wynik do: {{LinkPatrz|bez obiektów zwracane}}.
W pozostałych wypadkach funkcja zwraca wartość {{Code|nil}}.
===== Rozdziały centrowane =====
Gdy zmienna: {{Code|czy_centrowanie}} {{LinkPatrz|czy_centrowanie}}, ma uzyskaną z iteracji, a także {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci}}, wstawianej jako drugi parametr iteratora, czy uwzględniać rozdziały centrowane, jeśli przyjmuje wartość nieprawdziwą, to wtedy funkcja iteratora zwraca zawsze {{Code|nil}}, w tym przypadku, przeciwnie, a jeżeli rozdział i numeracja jednocześnie nie istnieją, to funkcja ogólnie zwraca {{Code|nil}}.
Przy istnieniu rozdziału centrowanego w linii, funkcja zwróci taki rozdział, jeżeli zmienna rozdziału i numeracji istnieją, ale któreś z nich nie może może być puste. Poziom rozdziału jest wtedy {{Code|2}}. A zmienna, czy to jest rozdział centrowany, wtedy przyjmuje wartość {{Code|true}}.
Wartości zwracane przez funkcję, w przypadku rozdziałów centrowanych {{Patrz|centrowane_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,2,nil,numeracja,true;
</syntaxhighlight>
===== Rozdział nagłówka ze znacznikami {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}=====
Jest podobny przypadek rozpatrywania, jak przy rozdziałach centrowania, poziom rozdziału jest okreslany przez funkcję: {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, a to nie jest rozdział centrowany, tylko nagłówkowy. W tym przypadku zmienna {{LinkPatrz|czy_znaczniki_hn}} przyjmuje wartość odpowiadającej prawdziwej. Gdy numeracja i rozzdział nie istnieją lub są puste, wtedy funkcja zwraca jedną wartość {{Code|nil}}.
Wynik w tym wypadku jest zwracany {{Patrz|znaczniki_hn_zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,numer_rozdzialu,nil,numeracja;
</syntaxhighlight>
===== Pozostałe rozdziały (ujemne), które zostały podseperowane, że jednak mogą być rozdziałami, a nie zwykłym tekstem - rozdziały niedwukropkowe (listy niezaczynające się od: {{Code|:}})=====
Wtedy funkcja sprawdza również, czy taki rozdział nie ma przekroczonego maksimum znaków, tzn. {{Code|maksymalny_rozmiar_rozdzialu_zerowego}} {{LinkPatrz|maksymalny_rozmiar_rozdzialu_zerowego}}.
Ta część dokonuje też dalszych sprawdzeń, co na podstawie tego taki rozdział zaliczać do rozdziału ujemnego (wtedy jest zwracany szereg wartości), czy do zwykłego tekstu (wtedy jest zwracana tylko wartość {{Code|nil}}).
Sprawdzane jest {{ZobaczTeż|rozdział niedwukropkowy zwracane}}, czy jest to rozdział dwukropkowy, przy pomocy funkcji: {{Code|{{sr|#p.CzyNapisWprowadzeniaTekstuDwukropkowyZDwomaApostrofamiOrazLiniamiNieWoluminu|b=tak}}}}, jeżeli nie jest, to jest dalej sprawdzane, czy rozdział ma początek równy znakom listy, lub przed cudzysłowem (w ramach cudzysłowu) ma znaki interpunkcyjne, a jeżeli nie ma, to zwracany jest wynik ogólny {{Patrz|rozdział niedwukropkowy zwracane}}:
<syntaxhighlight lang="lua">
return linia,rozdzial,(#poczatek*(-1)),poczatek,numeracja;
</syntaxhighlight>
{{Tab}}W innym wypadku, jeżeli poczatek linii, lub nawet numeracja, jeśli któreś z nich nie istnieją lub są puste, wtedy funkcja zwraca {{Code|nil}}, przeciwnie jest sprawdzane, co w punkcje {{LinkZobaczTeż|rozdział niedwukropkowy zwracane}} i zwracany jest wynik jak: {{LinkPatrz|rozdział niedwukropkowy zwracane}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
keck302s4m13uvrk0j399b02qbshe7t
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część I
4
63907
556318
554386
2026-09-14T14:05:18Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
556318
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie, czy również ujemne i zerowe, do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charaketryzujące nagłówek.
* 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 tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
scga6ws1ol0o7v7wbewyvqa2qo0h9xl
556319
556318
2026-09-14T14:08:25Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
556319
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charaketryzujące nagłówek.
* 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 tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4ned2rxybu7rr8eqsq9m9lbsz85s9zq
556320
556319
2026-09-14T14:09:50Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
556320
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zawraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
359e4h5tyvgrikldb1qpgkygg3mgze1
556321
556320
2026-09-14T14:11:41Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
556321
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja zwróci ściśle określoną wartość, która to właśnie powoduje, że ta funkcja wtedy nie jest uruchamiana, funkcja ta bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
6vj448hk4ob3xzit5hxhk0g7eh0390s
556322
556321
2026-09-14T14:22:19Z
Persino
2851
/* {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} */
556322
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ah5io5vdov5d5cszzvdc74x2wb7opir
556323
556322
2026-09-14T14:25:31Z
Persino
2851
/* Znaczniki szablonowe */
556323
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o 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|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
61vuuiahsqo9u68xtt7ug86akvw467n
556324
556323
2026-09-14T14:26:12Z
Persino
2851
/* Szablony generujące poziomy o dowolnym poziomie */
556324
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, jej definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
crbs2nttijsgx6kesbtlthbnzz06200
556325
556324
2026-09-14T14:26:46Z
Persino
2851
/* Magiczne derektywy */
556325
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
memd48byfzj3pma65jb3gwwqp4pob1v
556326
556325
2026-09-14T14:29:29Z
Persino
2851
/* Opis dalszy funkcji */
556326
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charaketruzjący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
iiolff3oe6ldqi1rrf91rgwyrmcsilw
556327
556326
2026-09-14T14:30:59Z
Persino
2851
/* {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} */
556327
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
e4ivegq7azp9g0yiwpuqnt99kckn6tv
556328
556327
2026-09-14T14:32:46Z
Persino
2851
/* {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} */
556328
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
oc8gonm1rcwud8o7lep2f9acoi8dvw0
556329
556328
2026-09-14T14:34:35Z
Persino
2851
/* {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} */
556329
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana waartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cv8pa7l53ztqb1z8s6w5fpo2n6sp12t
556331
556329
2026-09-14T14:39:45Z
Persino
2851
/* {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} */
556331
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznikaL {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bldup9fyvkx9ys5dxemnsu4svcpmphg
556332
556331
2026-09-14T14:47:47Z
Persino
2851
/* {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} */
556332
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
* Nazwy strony danego określonego spisu:
** {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} - jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
* {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_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,
* Tablice wynikłe z zakodowanych zmiennych:
** {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
* Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:
** {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} - funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość,
** {{Code|__FUNKCJA2}} {{Patrz|__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ść nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
Parametry funkcji zwracanej:
* Funkcja nie przyjmuje żadnych parametrów.
Jednoczesne parametry zwracane przez funkcję zwracaną:
* {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} - to jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią,
* {{Code|str}} {{Patrz|str}} - tekst napisu wprowadzenia tekstu (zawartość rozdziału),
* {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} - poziom aktualnego rozdziału,
* {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|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}} {{Patrz|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}} {{Patrz|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 {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
* {{Code|szablon}} - tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}.
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}.
; Parametry w wersji - szablonowe{{dk}}
* Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:
# {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} - to nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} - to nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} - to nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
; Parametry w wersji - znacznikowe{{dk}}
* Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:
# {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} - to nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
# {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} - to nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
# {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} - to nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|komorka}} - przetwarzana komórka - linia,
* {{Code|nie_trimowanie}} - czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
* {{Code|zawartosc}} - zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}},
* {{Code|czy_szablon}} {{Patrz|czy_szablon}} - czy zawartość modyfikowana jest od szablonu.
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wzór}} {{Patrz|wzor}} - wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
* {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} - czy linia reprezentuje rozdział dodatni równaniowy.
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
; Parametry podstawowe{{dk}}
* Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}.
; Inne parametry{{dk}}
* {{Code|tekst}} - jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
lbs5isd9els819049jfpwvdnge9fxnc
556358
556332
2026-09-14T18:59:01Z
Persino
2851
556358
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Funkcja zwraca iterator, która jest funkcją, z zerową listą parametrów, a on zwraca napis wprowadzenia tekstu i jego tekst rozdziału wraz z innymi parametrami charakteryzujący ten rozdział.
Przed uruchomieniem iteratora, gdy tekst jest zakodowany, funkcja modyfikuje nagłówki i ich zawartości rozdziałów, upraszczając je na maksimum do ich zmodyfikowanej zawartości jego elementy, zostawiając jedynie zakodowane, to co wskazuje na odpowiednie linki wewnętrzne i zewnętrzne, nawet te inteligentne, w tych linkach wszystko jest zakodowane.
Funkcja upraszcza kolejne linie łącząc je odpowiednio między sobą, bez linii, z którymi się nie da się tego zrobic, do tego służy: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}.
Funkcja z całego zmodyfikowanego rozdziału wydziela spis treści z linkami, nawet inteligentnymi, korzystając z funkcji: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, aby dało się z niego wydzielić treściwe rozdziały i artykuły, bez tych zbędnych, aby za pomocą innych funkcji dało się to wszystko poprawnie ponumerować, bez numerowania tego, co jest nie potrzebne.
Ten zwracany iterator ma funkcję, czy rozważać, tylko rozdziały dodatnie równaniowe, czy również dodatnie nierównaniowe (centrowane szablonowo, czy znaczniowo), ujemne (będące częścią pozycji listy) i zerowe (nie są tymi wcześniejszymi), do tego służy zmienna: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac}}. Ta funkcja za każdym razem uruchomienia tego zwraca inną linie charakteryzująca całą linię rozdziału, i jego wnętrze, i nazwę rozdziału, także zwraca inne parametry, charakteryzujące nagłówek.
* Iterator zwraca {{Code|nil}}, gdy nie znalazł dalej żadnego innego dalszego rozdziału, lub od razu też tą wartość, gdy w całym tekście nie ma żadnego jakikolwiek tego.
Oprócz iteratora funkcja w nagłówku zwraca drugi argument, jako zmodyfikowany tekst, wstępnie przygotowany do dalszej analizy, aby dało się na nim ładnie operować.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,czy_inne_rozdzialy_analizowac,czy_dalej_rozwazac_zakodowane,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU)
...
return function()
....
return naglowek_tab_aktualnego_rozdzialu,str,poziom_aktualnego_rozdzialu,poczatek_aktualnego_rozdzialu,numeracja_aktualnego_rozdzialu,czy_rozdzial_aktualny_centrowany;
end,tekst_rozwiniety_calego_artykulu;
end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}, ale nie musi być tak: {{LinkPatrz|czy_dalej_rozwazac_zakodowane}}, jeśli tekst jest zakodowany, w przeciwnym wypadku nie jest, tylko ten tekst jest zawartością danej strony,
| 2 = Nazwy strony danego określonego spisu: | nagłówek2 = tak
| 3 = {{Code|nazwa_przestrzeni}} - jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/Rozdziały}}, {{Code|nazwa_przestrzeni_ksiazki}} | _3 = Jak w: {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_ksiazki}} - jak w: {{LinkPatrz|nazwa_ksiazki|StronicowyParser/Rozdziały}}, {{Code|nazwa_spisu_tresci}} - jak w: {{LinkPatrz|nazwa_spisu_tresci|StronicowyParser/Rozdziały}},
| 4 = {{Code|czy_inne_rozdzialy_analizowac}} {{Patrz|czy_inne_rozdzialy_analizowac}} | _4 = Czy ma tylko uwzględniać rozdziały, nie tylko, dodatnie równaniowe,
| 5 = {{Code|czy_dalej_rozwazac_zakodowane}} {{Patrz|czy_dalej_rozwazac_zakodowane}} | _5 = czy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, ma być zakodowany, a jeśli jest taki, to są robione operacje na liniach, i wydzielonany jest tekst spisu treści z całego tego tekstu,
| 6 = Tablice wynikłe z zakodowanych zmiennych: | nagłówek6 = tak
| 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 8 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _8 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, {{Code|tab_nazwa_spisow_przekierowaniowych}} - jak w: {{LinkPatrz|tab_nazwa_spisow_przekierowaniowych|StronicowyParser/Rozdziały}},
| 9 = Funkcje iteratora tekstu napisu wprowadzenia tekstu i ich tekstów rozdziałów:|nagłówek9 = tak
| 10 = {{Code|__FUNKCJA}} {{Patrz|__FUNKCJA}} | _10 = Funkcja sprawdza, czy wywołanie szablonowe, czy jest normalnym szablonem, a nie instrukcją warunkową, na podstawie pełnego adresu szablonu, określa i zwraca jego zawartość.
| 11 = {{Code|__FUNKCJA2}} {{Patrz|__FUNKCJA2}} | _11 = Funkcja operująca na przygotowanej zawartości napisu wprowadzenia tekstu i tekście napisu wprowadzenia tekstu (rozdziału),
| 12 = {{Code|__FUNKCJA_ANALIZA_SPISU}} {{Patrz|__FUNKCJA_ANALIZA_SPISU}} | _12 = Funkcja do analizy i modyfikacji tekstu, może zwracać wartość nilową, przed samym wydzieleniem spisu treści, jeżeli pewna funkcja w niej zwróci ściśle określoną wartość, która to właśnie powoduje, że ta właściwa część tej funkcji nie jest uruchamiana, ta inna część funkcja bezpośrednio jest wywoływana w tej funkcji, służy ona do wydzielenia właściwego spisu treści danego spisu treści, tak robimi, uruchamiając funkcję: {{LinkŚródtytuł|p.IterTekst}}, dla każdego takiego spisu w odpowiedni sposób pokazaną w rozdziale: {{Code|{{sr|SpisTreści|p=StronicowyParser}}}}, co jest uwidocznione w module: {{Code|{{ld2|StronicowyParser/SpisTreści}}}}. Jeśli ta funkcja nie istnieje, lub zwraca wartość nilową, to ta zmienna {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} nie zmienia się, w przeciwnym wypadku, ta ona przyjmuje wartość zwróconą z tej funkcji.
}}
Parametry funkcji zwracanej:
{{OpisParametrów
| 1 = Funkcja nie przyjmuje żadnych parametrów. | nagłówek1 = tak
}}
Jednoczesne parametry zwracane przez funkcję zwracaną:
{{OpisParametrów
| 1 = {{Code|naglowek_tab_aktualnego_rozdzialu}} {{Patrz|naglowek_tab_aktualnego_rozdzialu}} | _1 = To jest tablica numerowana dwuelementowa, którego pierwszym elementem jest nagłówek rozdziału, a druga jest całą jego linią.
| 2 = {{Code|str}} {{Patrz|str}} | _2 = Tekst napisu wprowadzenia tekstu (zawartość rozdziału).
| 3 = {{Code|poziom_aktualnego_rozdzialu}} {{Patrz|poziom_aktualnego_rozdzialu}} | _3 = Poziom aktualnego rozdziału.
| 4 = {{Code|poczatek_aktualnego_rozdzialu}} {{Patrz|poczatek_aktualnego_rozdzialu}} | _4 = Przedrostek aktualnego rozdzialu, dotyczy list, zaczynających się na: {{Code|<nowiki>[;%*:#]</nowiki>}}, {{Code|nil}}, gdy nie ma takiego rozdziału.
| 5 = {{Code|numeracja_aktualnego_rozdzialu}} {{Patrz|numeracja_aktualnego_rozdzialu}} | _5 = Numeracja aktualnego rozdziału, numeracja jest na podczątku rozdziału, a właściwy rozdział dalej, gdy nie ma numeracji, wtedy numeracja jest ciągiem pustym, lub {{Code|nil}}.
| 6 = {{Code|czy_rozdzial_aktualny_centrowany}} {{Patrz|czy_rozdzial_aktualny_centrowany}} | _6 = Przedstawia, czy rozdział jest rozdziałem dodatnim centrowanym znacznikowym lub szablonowym.
}}
=== Wykorzystywane tablice w {{lpg|Lua}} w {{lpr|Lua|Scribunto}} ===
Te tablice są zdefiniowane w: {{Code|{{ld2|StronicowyParser/obiekty}}}}.
==== Szablony i znaczniki, wyróżniające linie, które są rozdziałami ====
Pierwszą tablicą jest {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}} słążaca do wskazania rozdziałów centrowanych. A ich odpowiedniki w postaci znacznikowych nagłówków są w: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
==== Szablony, projektów i tekstów, usuwane z tekstu ====
Szablony, które są usuwane z tekstu są zdefiniowane w {{Patrz|p.szablony_do_usuwania_z_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_do_usuwania_z_tekstu={
--- szablony książkowe umieszczane na stronie głównej podręcznika
["Kolekcja"]=true,
["TODO"]=true,
["Wersja do druku"]=true,
--- szablony typowo linkowe
["Dane tekstu"]=true,
--- szablony linkowania do innych projektow
["MediaWiki"]=true,
["Wikipedia"]=true,
["Wikipedia kat"]=true,
["Wikipedia2"]=true,
["Commons"]=true,
["Commons ilustr kat"]=true,
["Commonsall"]=true,
["Commonscat"]=true,
["Wikiatlas"]=true,
["Wikicytaty"]=true,
["Wikicytaty przysłowia"]=true,
["Inkubator"]=true,
["Meta"]=true,
["Wikinews"]=true,
["Wikinewscat"]=true,
["Wikinewsy"]=true,
["Portal Wikinews"]=true,
["Wikisłownik"]=true,
["Wikisłownik-cat"]=true,
["Wikimedia"]=true,
["Multiwmpl"]=true,
["Wikipodróże"]=true,
["Wikispecies"]=true,
["Multisource"]=true,
["Wikiźródła"]=true,
["Wikiźródła autor"]=true,
["Wikiźródła kat"]=true,
["Wikiźródła kuch kat"]=true,
["Wikiźródła krótki"]=true,
["Wikisource-lang"]=true,
};
</syntaxhighlight>
Ona jest opisana w: {{Code|{{sr|#p.szablony_do_usuwania_z_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia ona szablony projektów zdefiniowane na stronie {{s|MediaWiki}}.
Aby w końcowych rozważaniach w napisie wprowadzenia tekstu i tekście rozdziału, aby były bez nich, by analiza tekstu przebiegała bezproblemowo, by z niego dało się wykryć poszczególne rozdziały linie i w nich artykuły, a także w liniach w nierozdziałach, wykryć artykuły w nich.
==== Szablony, z których z których zostawiane są tylko zawartości ====
Z rozważanego tekstu są usuwane elementy przy pomocy tablicy: {{LinkPatrz|p.szablony_dozwolone_z_elementami_spisu_rzeczy_stron_woluminu|StronicowyParser/Rozdziały/Tom III}}, która jest wykorzystywana przez funkcję: {{Code|{{sr|#p.ObiektySzablonoweFormatowaniaTekstu|p=StronicowyParser/Rozdziały}}}}.
==== Inne szablony usuwane z tekstu ====
Tą tablicą, opisana w: {{Code|{{sr|#p.szablony_bez_generowania_napisowego|p=StronicowyParser/obiekty}}}}, jest o definicji {{Patrz|p.szablony_bez_generowania_napisowego}}:
<syntaxhighlight lang="lua">
p.szablony_bez_generowania_napisowego={
["Status"]=true,
};
</syntaxhighlight>
Przedstawia ona treści, szablony o pewnych nazwach, które z tworzącymi ich wywołaniami są usuwane z rozważanego tekstu. Są to szablony, które nie generują napisów wprowadzenia tekstu.
Inną tablicą, która przedstawia elementy do usuwania z tekstu, czyli o szablony o jakiś nazwach, opisana w: {{Code|{{sr|#p.szablony_nie_typowo_linkowe|p=StronicowyParser/obiekty}}}}, mającą określenie {{Patrz|p.szablony_nie_typowo_linkowe}}:
<syntaxhighlight lang="lua">
p.szablony_nie_typowo_linkowe={
["Plik"]=true,
["Kategoria"]=true,
["Kategorie"]=true,
["Wolumin"]=true,
["SortWolumin"]=true,
["SortKuchWolumin"]=true,
};
</syntaxhighlight>
Są to nazwy szablonów istniejących, którego na podstawie tego można stworzyć wywołania zawarte w tekście, które należy usunąć z niego. Są to szablony, które nie generują linków do artykułów jakiegoś podręcznika.
==== Znaczniki szablonowe ====
Definicję, jakie szablony uznać za znaczniki szablonowe, jest napisane w {{Patrz|p.znaczniki_szablonowe}}:
<syntaxhighlight lang="lua">
p.znaczniki_szablonowe={
["Znacznik"]=1,
["Div"]=1,
["Code"]=1,
["Tt"]=1,
["P"]=1,
["Sub"]=1,
["Sup"]=1,
["Span"]=1,
["Bdo"]=1,
["Small"]=1,
["Big"]=1,
["Strong"]=1,
};
</syntaxhighlight>
Opisana jest w: {{Code|{{sr|#p.znaczniki_szablonowe|p=StronicowyParser/obiekty}}}}. Są to odpowiedniki znaczników {{Strong|HTML}}, one po rozwinięciu właście to tworzą. One są usuwane odpowiednio z tekstu, tzn. ich zawartości sa pozostawiane, numer tego przedstawia, numer parametru tych szablonów, wartość tabeli o kluczu równym nazwie tego szablonu, to jest właśnie to.
==== Szablony generujące poziomy o dowolnym poziomie ====
Definicję szablonów generujące dowolny poziom napisu wprowadzenia tekstu jest {{Patrz|p.szablony_sztucznego_wprowadzenia_tekstu}}:
<syntaxhighlight lang="lua">
p.szablony_sztucznego_wprowadzenia_tekstu={
["HNumer"]=1,
};
</syntaxhighlight>
Opisana w: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}}, przedstawia szablony, która sztucznie generuje niemożliwe poziomy napisów wprowadzenia tekstu. Zawartością tego szablonu o numerze stojącego przy wartości elementów w tej tablicy, jest poziom dodatni o dowolnym poziomie, nie tylko {{Code|<nowiki>0 < pozim <= 6</nowiki>}}, ale też i: {{Code|<nowiki>poziom>6</nowiki>}}.
==== Magiczne derektywy ====
Z tekstu są usuwane magiczne derektywy zdefiniowane w tablicy: {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}}, ich definicja {{Patrz|p.magiczne_derektywy}}:
<syntaxhighlight lang="lua">
p.magiczne_derektywy={
["TOC"]=true,
["NOTOC"]=true,
["NOEDITSECTION"]=true,
};
</syntaxhighlight>
==== Napisy wprowadzenia tekstu, spisu treści lub spisu rzeczy, wykrywane funkcję ====
Napisy typu: {{Code|Spis treści}} lub {{Code|Spis rzeczy}}, które są wykrywane przez funkcję są zdefiniowane w {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu={
["spis treści"]=true,
["spis tresci"]=true,
["spis rzeczy"]=true,
};
</syntaxhighlight>
Aby elementy tej tablicy w odpowiednich rozdziałach w całości wykryć, należy użyć metatablicy: {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}. Ta tablica jest opisana w: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|p=StronicowyParser/obiekty}}}}.
==== Artykuły nieartykularne (okładki) ====
Aby funkcja wykryła artykuły, które uznać za nieartykularne, nie za zwykłe artykuły, należy użyć wyrażeń regularnych zdefiniowanych w tablicy {{Patrz|p.artykularne_niespisowe}}:
<syntaxhighlight lang="lua">
p.artykularne_niespisowe={
[1]="^[Oo][Kk][ŁłLl][Aa][Dd][Kk][Aa]$",
--[2]="^[Ww][Ss][Tt][ĘęEe][Pp]$",
};
</syntaxhighlight>
Ta tablica jest opisana w: {{Code|{{sr|#p.artykularne_niespisowe|p=StronicowyParser/obiekty}}}}. Ona powoduje, że elementy tego typu nie będą wykrywane w spisie artykułów danego podręcznika, bo np. przedstawiają one okładki tego typu, no bo jak uznać okładki za artykuły.
=== Przykłady ===
Przykładowe użycia:
<syntaxhighlight lang="lua">
local stronicowyparser_tekst_modul=require("Module:StronicowyParser/Tekst");
local __FUNKCJA_PARAMETRY=nil;
local __FUNKCJA_ANALIZA_SPISOWA=function(tekst_artykulu,nazwa_modulu_szablonu_opisu,nazwa_strony_bez_kodow_html,szablony_magiczne,tabela_nazw)
return nil;
end;
local tekst_rozwiniety_calego_artykulu,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony=stronicowyparser_tekst_modul:RekurencyjnyZakodowanoSpreparowanyWikikodStrony(nazwa_modulu,false,nil,nil,__FUNKCJA_ANALIZA_SPISOWA,__FUNKCJA_PARAMETRY);
local __FUNKCJA=function(pelna_nazwa_szablonu,tabela_modyfikatorow)
... ---- Funkcja aktualnie nieużywana;
local szablonowe_modul=require("Module:Szablonowe");
if(not szablonowe_modul.CzyModyfikatoryZElementamiSzablonowymiNormalnymiSzablonowe(tabela_modyfikatorow))then return nil;end;
---
pelna_nazwa_szablonu=techniczne_modul.PrzekierowanieDoStrony(pelna_nazwa_szablonu) or pelna_nazwa_szablonu;
local tekst=stronicowyparser_tekst_modul.SpreparowanyWikikodStrony(nil,pelna_nazwa_szablonu,true);
return tekst;
end;
local __FUNKCJA2=function(str,pelna_nazwa_strony,tablica_analizy_obiektow_strony_dany_modul,czy_naglowek)
...
return str;
end;
local __FUNKCJA_ANALIZA_SPISU=function(tekst_rozwiniety_calego_artykulu,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)
local stronicowyparser_analizaspisu_modul=require("Module:StronicowyParser/AnalizaSpisuRzeczy");
local tekst=stronicowyparser_analizaspisu_modul.AnalizaSpisuRzeczy(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych);
return tekst;
end;
local iterator,tekst_rozwiniety_calego_artykulu=stronicowyparser_rozdzialy_modul.IterTekst(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,true,true,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,__FUNKCJA,__FUNKCJA2,__FUNKCJA_ANALIZA_SPISU);
---- iterator - iterator;
---- tekst_rozwiniety_calego_artykulu - tekst zakodowany maksymalnie zmodyfikowany przyszykowany do dalszej analizy;
local parsuj_rozdzialami=nil;
for rozdzial_tab,text,poziom_rozdzialu,poczatek_rozdzialu,numeracja,czy_rozdzial_centrowany in iterator do
... --- Gdy tekst ma rozdziały iterowalne;
if(not parsuj_rozdzialami)then parsuj_rozdzialami=true;end
end;
if(not parsuj_rozdzialami)then
... ---- Gdy tekst nie ma rozdziałów iterowalnych;
end;
</syntaxhighlight>
=== Opis dalszy funkcji ===
Liczymy nazwę spisu bez nazwy przestrzeni szablonowej: {{Code|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}} {{Patrz|pelna_nazwa_spisu_tresci_bez_nazwy_przestrzeni_szablonowej}}, i nazwę szablonową tej strony: {{Code|pelna_nazwa_spisu_tresci_szablonowa}} {{LinkPatrz|pelna_nazwa_spisu_tresci_szablonowa|StronicowyParser/Rozdziały}}. W tej ostatniej uwzględniamy również możliwą przestrzeń główną, w której tej ostatniej uwzględniamy sam dwukropek {{Code|:}}, lub inną.
Definiujemy funkcje: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} (usuwa odpowiednie elementy z tabeli parametrów przeanalizowanych z: {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/Rozdziały}}, na podstawie {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}) i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}} (usuwa elementy z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, bazy danych skonstrułowanych dzięki: {{Code|{{m|Szablonowe}}}}), oraz do nich potrzebne zmienne.
Funkcja decyduje, czy wybrać blok z sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane}} - czyli czy główny tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowany, czy nie - wtedy nie, gdy to wybieramy kolejno, to ta zmienna przyjmuje wartość {{Code|true}}, w innym wypadku ona odpowiada wartości odpowiadającej fałszywej.
==== Kod z sekcją: {{Code|czy_dalej_rozwazac_zakodowane}} ====
Opis funkcji według tej sekcji dotyczy, gdy zmienna: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, jest zakodowana.
===== Definicje potrzebnych funkcji do opisu działającego kodu =====
Przedstawiamy tutaj definicję lokalnych funkcji.
====== {{Śródtytuł|UsuwanieNowychLiniiZnacznikowe}}{{Code|UsuwanieNowychLiniiZnacznikowe}} ======
Funkcja służy do modyfikacji tekstu tylko ze znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', takich jak: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''': {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonów '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieNowychLiniiZnacznikowe(szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest elementem tabeli bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}, modułu: {{Code|{{m|Szablonowe}}}}.
}}
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Funkcja nie zmienia poziomu zakodowania tekstu, tzn. ona służy jedynie do {{ZobaczTeż|elementy usuwane nowe linie}} znajdowania znaczników: {{Tag|br|pojedynczy}} i {{Tag|hr|pojedynczy}}, oraz szablonów: {{Code|{{s|Br}}}} i {{Code|{{s|Hr}}}}, w nim, i zamieniania ich na jedną spację (odstęp).
Funkcja zwraca tak zmodyfikowany tekst, podany jako pierwszy parametr funkcji. Sprawdza, czy one wystąpiły przy {{Code|poziom_iteracji}} {{=}} {{Code|0}}, jeżeli występują, to ta funkcja zwraca drugi wynik w postaci wartości: {{Code|true}}, przeciwnie ta wartość jest: {{Code|nil}}.
====== {{Śródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}{{Code|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}} ======
Funkcja usuwa elementy, zagnieżdzone, linie charakteryzujące rozdziały - napisy wprowadzenia tekstu, które są znacznikami języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{ZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{ZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, zastępując je odpowiednimi ich zawartościami, pozostawiając jedną główną nową linię z szablonem lub znacznikiem, centrowania, czy znacznikiem nagłówków: {{LinkZobaczTeż|nagłówki}}, linii, którą jest on charakteryzujący się wnętrzem: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, rodzajem obiektu, dostępne obiekty to: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, i jego numerem: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|szablon-obiekt-kod}}:
{{OpisParametrów
| 1 = {{Code|szablon}} | _1 = Tekst do zmodyfikowania, jak w: {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, lub jego elementy bazy: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/Rozdziały}}.
}}
Funkcja korzysta z funkcji: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}.
Te linie mogą być oznaczone szablonami: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, lub znacznikami: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Funkcja zwraca tak zmodyfikowany tekst {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, z drugim parametrem {{Code|true}}, jeżeli zagnieżdzone napisy wprowadzenia tekstu wystąpiły, przeciwnie jest zwracany ten sam tekst, bez modyfikacji, co został przyjęty jako pierwszy parametr funkcji, z drugim parametrem {{Code|nil}}.
====== {{Śródtytuł|Modyfikacja}}{{Code|Modyfikacja}} ======
Funkcja usuwa zagnieżdzone napisy wprowadzenia tekstu nierównaniowe: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} przy pomocy funkcji w pierwszej kolejności: {{LinkŚródtytuł|UsuwanieZagniezdzonychNapisowWprowadzeniaTekstu}}, w drugiej: nowe linie, nawet kresek, czyli: {{LinkZobaczTeż|elementy usuwane nowe linie}}, dzięki: {{LinkŚródtytuł|UsuwanieNowychLiniiZnacznikowe}}, następnie znaki nowych linii języka: {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, powstałe przez znak nowej linii: {{Code|<nowiki>\n</nowiki>}} {{Patrz|nowa linia}}, zamieniając to na spację.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local Modyfikacja=function(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jakikolwiek parametry, jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}. |nagłówek1 = tak
}}
Funkcja zwraca tekst zmodyfikowany: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}} - pierwszy parametr funkcji, z drugą wartością {{Code|true}}, bo nastąpiła jego zmiana wnętrza, a jeżeli nic się nie zmieniło, to druga wartość jest {{Code|nil}}, a pierwsza wartość, to niezmodyfikowany element, ten pierwszy argument tej funkcji.
====== {{Śródtytuł|UsuwanieZnacznikowe}}{{Code|UsuwanieZnacznikowe}} ======
Główny element: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, który jest pierwszym argumentem tej funkcji, który charakteryzuje się, tym, że jest znacznikiem języka: '''{{lpg|HTML}}''' mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''' wraz zawartością i atrybutami, takich jak {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}}: znaczniki '''centrowania''': {{Tag|center}}, i '''nagłówków''' {{LinkZobaczTeż|nagłówki}}: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, jak i szablonami '''centrowania''': {{s|Ce}}, {{s|Centruj}} i {{s|Center}}.
Funkcja korzysta z tabeli: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, dla napisów wprowadzenia tekstu szablonowych, i {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, dla napisów wprowadzenia tekstu znacznikowych. Te elementy są podane w: {{LinkZobaczTeż|elementy usuwane - szablony i znaczniki, napisów wprowadzenia tekstu}} - szablony i znaczniki centrowania, i {{LinkZobaczTeż|nagłówki}} - znaczniki nagłówków.
Funkcja sprawdza, czy to jest napis wprowadzenia tekstu szablonowy typu, jedynie w dwóch sprawdzonych zakresach, tzn.: {{Code|SZABLON}}, czy {{Code|ZNACZNIK}}.
* W obu tych rozgałęzieniach funkcji, dla tych elementów z tych tabel, jest uruchamiana procedura modyfikująca: {{LinkŚródtytuł|Modyfikacja}}, która drugim parametrem zawiadamia, czy coś się zmieniło.
* W innych zakresach funkcja nic nie zwraca.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function UsuwanieZnacznikowe(szablon,obiekt,kod,parametr1,parametr2,parametr3)...end;
</syntaxhighlight>
Parametry funkcji {{Nobold|{{ZobaczTeż|parametry znacznikowe}}}}:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod}}, dla parametrów bazy: {{Code|{{m|Szablonowe}}}}. | komórka1 = tak
| 2 = Parametry w wersji - szablonowe: | nagłówek2 = tak
| 3 = Parametry szablonowe, gdy obiekt wskazany przez zmienną: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|SZABLON}}, wtedy one mają taką słuszność:| komórka3 = tak
| 4 = {{Code|parametr1}} {{Patrz|parametr1-szablonowe}} | _4 = To nic innego jak: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika.
| 5 = {{Code|parametr2}} {{Patrz|parametr2-szablonowe}} | _5 = To nic innego jak: {{Code|nazwa_szablonu}} {{LinkPatrz|nazwa_szablonu|StronicowyParser/Rozdziały}}, czyli zawartość znacznika.
| 6 = {{Code|parametr3}} {{Patrz|parametr3-szablonowe}} | _6 = To nic innego jak: {{Code|tabela_modyfikatorow}} {{LinkPatrz|tabela_modyfikatorow|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
| 7 = Parametry w wersji - znacznikowe:| nagłówek7 = tak
| 8 = Parametry znacznikowe, gdy obiekt: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest typu: {{Code|ZNACZNIK}}, tutaj wtedy mamy ów:|komórka8 = tak
| 9 = {{Code|parametr1}} {{Patrz|parametr1-znacznikowe}} | _9 = To nic innego jak: {{Code|nazwa}} {{LinkPatrz|nazwa|StronicowyParser/Rozdziały}}, czyli jak nazwa znacznika,
| 10 = {{Code|parametr2}} {{Patrz|parametr2-znacznikowe}} | _10 = To nic innego jak: {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały}}, czyli zawartość znacznika,
| 11 = {{Code|parametr3}} {{Patrz|parametr3-znacznikowe}} | _11 = To nic innego jak: {{Code|atrybuty}} {{LinkPatrz|atrybuty|StronicowyParser/Rozdziały}}, czyli atrybuty znacznika.
}}
Jeżeli nic się nie zmieniło, to funkcja zwraca wartość: {{Code|nil,true}}, a jeżeli przeciwnie, to wartość zmienioną, ewentualnie ze zmodyfikowaną bazą {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/Rozdziały}} (ale zwracane bez niej, a wartość {{LinkPatrz|szablon|StronicowyParser/Rozdziały}}, która się wtedy nie zmieniła, bo baza jest teraz inna, jedynie jest brana do obliczeń, aby określić element pierwszy zrzucony przez tą procedurę), z drugą wartością {{Code|true}}.
====== {{Śródtytuł|PrzetwarzanieZnacznikowe}}{{Code|PrzetwarzanieZnacznikowe}} ======
Funkcja do przetwarzania ciągu (modyfikowanej treści), do odpowiedniego ustawiania linii.
; Funkcja służy do tego{{dk}}
* Jeżeli napotkała znaki listy na początku nowej linii, to usuwana jest jego magiczność, aby to nie znaczyło, tyle co pozycje listy,
** Bo ten element może się znaleźć bezpośrednio lewego końca znacznika - ten znacznik boże być obiektem typu {{Code|ZNACZNIK}} lub {{Code|SZABLON}}, czyli wtedy jest znacznikiem szablonowym, które te elementy tyle znaczą co nic, ale po zastąpieniu tego jego zawartością, one nabierają magiczności, którą z racji tego trzeba usunąć magię tego.
* Element znajduje się na początku komórki tabeli, wtedy ten sam problem, czyli wtedy po usunięciu tabeli, zdobywa to magiczność, bo w znaczniku lub w komórce nie były one magiczne, robiąc pewne operacje.
* Funkcja zamienia wszystkie kody '''{{lpg|HTML}}''' spacji, na jedną odstępową spację, by udało się w pełni sprawdzenie {{LinkPatrz|pozycje listy}}, bo tam na początku może występować dowolna liczba odstępów: {{Code|<nowiki>%s</nowiki>}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local PrzetwarzanieZnacznikowe=function(komorka,nie_trimowanie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|komorka}} | _1 = Przetwarzana komórka - linia,
| 2 = {{Code|nie_trimowanie}} | _2 = Czy jest włączona możliwość nie trimowania komórki, zaprzeczenie tego,czy ma trimować.
}}
Funkcja znaki odstępu dyktowane kodami: {{Code|{{Nowiki| }}}}, {{Code|{{Nowiki| }}}} i {{Code|{{Nowiki| }}}}, są zastępowane na pojedynczą spację, te spacje mogą być pokolei dla każdego kodu {{Strong|HTML}}. To już zamienione przypisuje pod starą wartością {{Code|komorka_stara}}, a ta nowa {{Code|komorka}}, ta zmieniona, jest trimowana, jeżeli ta funkcja w tej funkcji jest włączona poprzez zaprzeczenie drugiego parametru tej funkcji, którego tutaj powinna przyjmować nie wartość prawdziwą, czyli czy ma trimować.
Jeżeli wyrażenie pasuje do starej wartości: {{Code|<nowiki>^%s*[#%*:;>]</nowiki>}} {{Patrz|pozycje listy}}, czyli są to w nawiasie kwadratowym elementy pozycji listy i nie tylko, to na poczatek tego nowego jest dodawany pojedynczy odstęp.
Jeżeli trimowanie jest włączone, to na poczatek są dodawane dwa znaki nowej lini: {{Code|<nowiki>\n</nowiki>}}, a na końcu ta jedna, i to jest zwracane - zmodyfikowana wartość {{Code|komorka}}, w przeciwnym razie zwracana jest wartość równa otrzymanej nowej wartości tego czegoś, czyli też {{Code|komorka}}.
====== {{Śródtytuł|ZamienNaKody}}{{Code|ZamienNaKody}} ======
Funkcja zamieniająca odpowiednie znaki na znaki kodu {{Strong|HTML}}.
Gdy pozycje listy lub element rozdziału dodatniego równaniowego jest na początku elementu, tzn. to: {{LinkPatrz|pozycje magiczne}}, gdy znajduje się w znaczniku normalnym typu {{Code|ZNACZNIK}} lub szablonowym {{Code|SZABLON}} (te znaczniki są w kategorii: {{lk2|Szablony znaczników}}), na początku jego, to nie ma żadnej magiczności, po zastąpieniu tego jego zawartością, to to nabiera nakiego nasycenia, ale to aby nie było to takie, to te znaki zastępujemy kodami '''{{lpg|HTML}}'''.
Podobnie jest ze znakiem {{Code|{{=}}}}, według: {{LinkPatrz|rozdziały magiczne}} na końcu tego elementu w przypadku rozdziału równaniowego dodatniego, wtedy w tej linii, nie ma już takiego rozpoznanego rozdziału wykrywanego przez '''{{ld|StronicowyParser|Stronicowy parser}}'''.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function ZamienNaKody(zawartosc,czy_szablon)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zawartosc}} | _1 = Zawartość modyfikowana, działa podobnie jak w: {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}
| 2 = {{Code|czy_szablon}} {{Patrz|czy_szablon}} | _2 = Czy zawartość modyfikowana jest od szablonu.
}}
Funkcja sprawdza, czy pierwszy znak linii jest nową linią, jeśli nie, to znaki przechwytywane z: {{Code|<nowiki>^([=%*#:;])</nowiki>}} {{Patrz|pozycje magiczne}}, są zamieniane na kody {{Strong|HTML}}.
Funkcja sprawdza, czy ostatni znak linii jest nową linią, jeśli nie, to znaki przechwytywane z pierwszego ciągu z: {{Code|<nowiki>([=])([^%S\n]*)$</nowiki>}} {{Patrz|rozdziały magiczne}}, są zamieniane tak jak poprzednio.
Funkcja w ten sposób zwraca zmodyfikowaną zawartość, jeśli były elementy nabierające magicznego kontrastu, lub nie.
====== {{Śródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}{{Code|LiniaRozdzialyDodatnieOrazUjemne}} ======
Funkcja modyfikująca poszczególne linie według odpowiedniego schematu, czyli na podstawie odpowiedniego wzoru {{LinkPatrz|wzor}}, i sprawdza odpowiednio, czy tą linią jest rozdział dodatni równaniowy {{LinkPatrz|czy_rozdział_dodatni}}.
; Funkcja w przypadku rozdziału dodatniego równaniowego (typu, że po obu stronach linii znajdują się znaki {{Code|{{=}}}}, a w wewnątrz tekst) i te będące znakami listy (przypominające rozdziały ujemne){{dk}}
* Rozpoczynające się na: {{Code|<nowiki>[%*#;:]</nowiki>}}, modyfikują je, aby nie było w nim innych rozdziałów dodatnich, ani ujemnych, rozdziałów centrowanych szzablonowych: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, oraz znacznikowych centrowania: {{Code|center}}, i znaczników nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}},
* Jak i znaczników nagłówków szablonowych jak: {{s|HNumer}}, a w nim we wnętrzu według jego definicji jest dowolna liczba równa się po lewej i po prawej stronie jego, co symbolizuje rozdział dodatni równaniowy, chociaż, nie do końca nim jest,,
** Funkcja zastąpuje je ich zawartościami, i zastępując wszystkie znaczniki nowych linii {{Tag|br}} i kresek {{Tag|hr}}, czy szablony kolejno: {{s|Br}} i {{s|Hr}}, wtedy w głównym rozdziale dodatnim, czy przypominającym ujemnym, tego już nie ma, i mamy czyste te, które pisze się dokładnie jedną linią, a nie wieloma.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function LiniaRozdzialyDodatnieOrazUjemne(wzor,czy_dodatni_rozdzial)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|wzór}} {{Patrz|wzor}} | _1 = Wzór przetwarzający linię, możliwe dostępne są dwa wzory: {{Code|<nowiki>^(=[^\n]*[^%s=][^\n]*=)[^%S\n]*$</nowiki>}} (symbolizuje rozdział dodatni równaniowy) i {{Code|<nowiki>^([%*#;:]+[^\n]*)$</nowiki>}} (symbolizuje rozdziały ujemne, napisane za pomocą pozycji listy).
| 2 = {{Code|czy_rozdział_dodatni}} {{Patrz|czy_rozdział_dodatni}} | _2 = Czy linia reprezentuje rozdział dodatni równaniowy.
}}
Funkcja wydziela poszczególne linie wewnątrz siebie, i za pomocą pewnej funkcji wkładanej do niego jako drugi parametr, robi operacje na nich. Tą funkcją jest: {{Code|{{sr|#p.ZamianaZnakowaLinii|p=Szeregi}}}}.
Dla lini pasujących do wzoru {{LinkPatrz|wzor}}, to linie są kompletowane, używając funkcji: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekstu|p=Szablonowe}}}} (funkcja wykorzystuje procedury: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}}, i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}), a w nim dla elementu: {{Code|SZABLON}} i {{Code|ZNACZNIK}}, jest robione, co w nagłówku powiedziane jest, a dla znaczników mechanizmu '''{{NS|k=mw|w=tak|l=tak}}''', obiektów {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} równym: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|NOWIKI}}, są specjalne znaki znacznika: {{Tag|nowiki}}, są zamieniane na kody '''{{lpg|HTML}}''', dla znaków: {{Code|<nowiki>[%!{}|=<>%[%]]</nowiki>}}, na podstawie wywołanej tam funkcji: {{Code|{{sr|#p.ZnakiSpecjalneTaguNowiki|p=Html}}}}, co później w ostatecznym tym elemencie znak nowej linii: {{Code|<nowiki>\n</nowiki>}}, jest zastąpiony jedną spacją. A gdy jednak te znaczniki nie mają zawartości, to są zastępowane ciagiem pustym.
===== Dalszy opis =====
Przed uruchomieniem głównego iteratora zwracanej przez tą funkcję, ona przez nią musi przejść przez te kroki, aby wyedytować odpowiednio tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
====== Zmiana tekstu (Krok 1) - Upraszczanie jakikolwiek linii do najprostszej możliwej postaci, aby było możliwe rozpoznanie pewnych obiektów, nie tylko linkowych przez {{ld|StronicowyParser|Stronicowy parser}} ======
{{Tab}}Uruchamiamy funkcję: {{Code|{{sr|#p.KodowanieNiezakodowanychNormKodowychReferencjiTekstu|p=Szablonowe}}}}, która służy do kodowania szablonów referencji: {{s|R}}, {{s|RN}} i {{s|RNota}}, {{s|U}}, {{s|UN}} i {{s|UNota}}, {{s|O}} i {{s|Ref}} oraz {{s|Refn}}, znaczniki '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''': {{Tag|ref}}, a także dopisująca linkom zewnętrznym nienazwanym ich numerkowe nazwy, by napisać ich numerki uruchomień, aby się zgadzała ich kolejność, a te elementy za to referencji są zamieniane w odpowiednie kody {{Strong|HTML}}, w innych przypadkach uruchamia się funkcja: {{Code|__FUNKCJA_INNE_OPERACJE}} {{Patrz|__FUNKCJA_INNE_OPERACJE}} (która robi inne operacje, które wykorzystamy do definicji funkcji tutaj, która coś robi), która jest zdefiniowana na zewnętrz tej funkcji. Funkcja wykorzystuje też: {{Code|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_PARAMETROWE|StronicowyParser/Rozdziały}} i {{Code|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE}} {{LinkPatrz|__FUNKCJA_OPERACJE_USUWANIE_BAZOWE|StronicowyParser/Rozdziały}}, zdefiniowane w opisywanym module.
{{Tab}}Funkcja ta doprowadza, za pomocą funkcji: {{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}} - pierwsza funkcja w niej, do najprostrzej postaci wikitekst zakodowany: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, aby w tekście były tylko linki szablonowe, nawet iteligentne, bądź spisowe, czy typu linki wewnętrzne {{Code|LINKW}}, a nawet zewnętrzne {{Code|LINKZ}}: i rozdziały niezależnie jak są reprezentowane, czy znacznikowo, czy szablonowo, i niektóre inne, aby one były w najprostrzej postaci, aby nie było rozdziałów zagnieżdżonych jeden w drugim, szablony typu stucznego reprezentowania rozdziałów dodatnich równaniowych, są zastępowane ich zawartościami. W rozdziałach szablonowych mogą być linki, niezależnie jakie.
{{HNumer|1=
======= Opis funkcji {{nobold|{{Code|__FUNKCJA_INNE_OPERACJE}} {{LinkPatrz|__FUNKCJA_INNE_OPERACJE}}}}, a w nim jest, jako pierwszy argument modyfikowany tekst wnętrzna elementu innego niż przypadek szablonów i znaczników referencji - nazwane i nienazwane =======
}}
Funkcja się uruchamia, wtedy kiedy mamy do czynienia z szablonami innymi niż referencje nazwane i nienazwane, podobnie w przypadku znaczników innych niż referencje. Ona też działa w pozostałych przypadkach.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function(szablon,obiekt,kod,parametr1,parametr2,parametr3,tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Parametry podstawowe: | nagłówek1 = tak
| 2 = Parametry tej funkcji, jak w: {{LinkZobaczTeż|parametry znacznikowe}}. | komórka2 = tak
| 3 = Inne parametry: | nagłówek3 = tak
| 4 = {{Code|tekst}} | _4 = Jak w: {{LinkPatrz|tekst|StronicowyParser/Rozdziały}}.
}}
Funkcja modyfikuje wnętrza obiektów: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, o typie:
* {{Code|SZABLON}} - pewne szablony są zastępowane ich wnętrzem lub są zastępowane ciągiem pustym,
** Szablony typu: {{s|HNumer}}, jeśli można są modyfikowane,
** Szablony cenntrowania z: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, są zachowywane, chyba że w swojej zawartości mają inne rozdziały dodatnie równaniowe i pozycje listy, wtedy one są zachowywane ich zawartościami.
* {{Code|ZNACZNIK}} - elementy ze znacznikami są zastępowane ich zawartościami, a znaczniki typu:
** centrowania: {{Tag|center}} i nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, są zachowywane, lub zastępowane ich zawartościami, jeśli w sobie mają rozdziały dodatnie równaniowe lub pozycje listy.
* {{Code|INNEPRE}} - składająca się z samych odstępów są zastępowane ciągiem pustym, a inne ich zawartościami,
* {{Code|LINKW}} i {{Code|LINKZ}} - w nich znaczniki są zastępowane ich zawartościami, lub one znaczniki nowych linii: {{Tag|br}} i kresek {{Tag|hr}}, są zamieniane na spacje,
* {{Code|WIKITABELA}} - komórki, w niej, są upraszczne do zbioru nowych linii, aby była zachowana, kolejność wierszy i komórek.
; Szablony i znaczniki nagłówków jakie modyfikujemy w funkcji są{{dk}}
* Elementy do centrowania obiektów na stronie '''{{lpg|HTML}}''' w '''mechanizmie {{NS|l=tak|w=tak|k=mw}}''':
** {{s|Ce}}, {{s|Centruj}} i {{s|Center}} - szablony centrowania rozdziałów,
** {{Tag|center}} - znaczniki centrowania,
* {{s|HNumer}} - szablonu sztucznych rozdziałów,
* {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}} - szablony znaczników nagłówków.
: Zagieżdżone formy szablonów nagłówków w nich są usuwane, także szablony i znaczniki, nowej linii i kresek, są tam zastępowane spacją.
; Szablony sztucznych nagłówków{{dk}}
* {{s|HNumer}} - jeśli w sobie posiadają znaczniki {{Tag|div}}, i w nich nie ma nowej linii, ale on bezpośrednio znajduje się w tym szablonie, to ten znacznik jest zastępowany tą zawartością, a magiczność elementów, w tym znaczniku, rozdziałów dodatnich równaniowych i poyzycji listy zostaje usunięta.
====== Zmiana tekstu (Krok 2) - Upraszczanie rozdziałów, dodatnich równaniowych i pozycji list, do najprostszej postaci ======
Uruchamiana jest dwa razy funkcja: {{LinkŚródtytuł|LiniaRozdzialyDodatnieOrazUjemne}}, raz dla rozdziału dodatniego równaniowego, a raz następnie dla pozycji listy w '''mechanizmie {{NS|k=mw|l=tak}}''', ta funkcja działa dla każdej linii w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
* Funkcja upraszcza zawartość tych linii (rozdziałów) do takiej postaci, by w nim nie było znaczników nagłówków, a nawet nagłówków przygotowanych z szablonów centrowania szablonowego lub znacznikowego.
** Znaczniki, czy szablony, nowej linii i kreski poziomej, bądź ich szablony, czy znaki nowej linii, są zastępowane spacją.
** Ich elementy są zastępowane ich zawartościami.
; Inne obiekty
* Zmaczniki {{Code|PRE}} w tych rozdziałach są zastępowane jego zawartością, odpowiednio modyfikując znaki specjalne, zastępując je na kody '''{{lpg|HTML}}'''.
* Podobnie jest z elementami {{Code|ŹRÓDŁO}} i {{Code|NOWIKI}}.
** W tych dwóch pierwszych obiekrach. Znak nowej linii jest zastępowany wtedy spacją, jeśli on znajduje się w rozdziale dodatnim. Ale w każdym bądź razie, zawartośc ich, a w nich magiczne elementy przyjmują kształt kodów języka: '''{{lpg|HTML}}'''.
====== Zmiana tekstu (Krok 3) - Doprowadenie tekstu, to jednoznaczności rozumienia szablonów rozdziałów, aby w linii, wszystko co reprezentuje główny nagłówek był w całości w niej, nigdy jako normalna część ======
; Modyfikacja obiektów typu szablonowego{{dk}}
* Dla obiektu szablonowego typu {{Code|SZABLON}}, a w nim dla szablonów, tzn.: napisu wprowadzenia tekstu, w których ich nazwy pasują do: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, to dla obu stron ich kodów wstawiana jest podwójna nowa linia.
* A szablony o nazwach z tabeli: {{Code|{{sr|#p.szablony_sztucznego_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_sztucznego_wprowadzenia_tekstu}}, których wywołania są zamieniane na znacznik napisu wprowadzenia tekstu typu: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{Tag|h6}}, w których po obu stronach wstawiana jest podwójna nowa linia.
; Typu znacznikowego{{dk}}
* Dla obiektu {{Code|ZNACZNIK}}, a w nim dla znacznika: {{Tag|center}}, lub dla {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, wstawiane jest, po obu stronach ich kodów, podwójna nowa linia.
; Teksty z czcionką o stałej szerokości{{dk}}
* Dla obiektu {{Code|INNEPRE}}, dla jego kodu, po obu jego stron, wstawiana jest pojedyncza nowa linia.
; Specjalne obiekty{{dk}}
* A nareście dla obiektow: {{Code|PRE}}, {{Code|ŹRÓDŁO}}, {{Code|GALERIA}}, {{Code|MAPAOBRAZU}} i {{Code|PUDEŁKOWEJŚCIA}}, w przypadku ich kodów, wstawiane jest po obu ich stronach podwójna nowa linia.
==== Kod wspólny przed integracją linii i wyodrębnieniem spisu treści ====
Z {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}} są usuwane komentarze typu według wzoru w {{Lpg|Lua}} w {{lpr|Lua|Scribunto}} taki: {{Code|<nowiki><!%-%-.-%-%-></nowiki>}}, a także magiczne derektywy według {{Code|{{sr|#p.magiczne_derektywy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.magiczne_derektywy}}.
A także po nowych liniach kreskowych wstawiany jest znak nowej linii wraz ze spacją po nich.
==== Integracja linii i wyodrębnienie spisu treści dla treści zakodowanych ====
Linie są integrowane według: {{Code|{{sr|#p.IntegrowanieLiniiTekstuWRamachJegoNapisuWprowadzenia|b=tak}}}}, a później wydzielany jest odpowiedni spis treści z tekstu: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}, według funkcji: {{LinkŚródtytuł|p.IterTekst}}, tzn. na podstawie użycia: {{Code|__FUNKCJA_ANALIZA_SPISU}} {{LinkPatrz|__FUNKCJA_ANALIZA_SPISU}}, jeżeli została podana.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
eng3ob833lp18v7pb3gm932g54fqyf5
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom I
4
63908
556343
554651
2026-09-14T16:17:55Z
Persino
2851
556343
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Przedstawione sa tu funkcje do zbierania informacji o uchwycie.
== {{Śródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}{{Code|p.UstawUchwytyWeTablicyBezNumeracji}} ==
Funkcja zbiera uchwyty, dla obiektów {{ZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}, bez numeracji, nie licząc obiektów tekstu, takich jak {{s|Śródtekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} {{Patrz|self}} - zmienna obiektowa modułu {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}} {{Patrz|StronicowyParser/ZbieranieDanychStron}},
* {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} - zmienna zbierająca takie kody jak {{LinkZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}},
* {{Code|nazwa_obiektu}} {{Patrz|nazwa obiektu}} - nazwa obiektu,
* {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} - pozycja w normalnej tabeli uchwytów i przeważnie ich numeracji, a tutaj dla tego obiektu,
* {{Code|kod}} {{Patrz|kod}} - numer kodu dla tego obiektu.
Funkcja zbiera elementy tablicy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, w tablicy wielowymiarowej o pierwszym elemencie wymiaru o wartości: {{Code|nazwa obiektu}} {{LinkPatrz|nazwa obiektu}}, i trzecim o wartości: {{Code|kod}} {{LinkPatrz|kod}}, oraz o drugim: {{Code|uchwyty_bez_numeracji}} {{Patrz|uchwyty_bez_numeracji}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
== {{Śródtytuł|p.WydobywanieUchwytuZeTablicyBezNumeracji}}{{Code|p.WydobywanieUchwytuZeTablicyBezNumeracji}} ==
Funkcja wydowywa tablicę uchwytu dla pozycji, ale nie sam uchwyt, dla podtablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, o danym kodzie: {{Code|kod}} {{LinkPatrz|kod}}, dla nazwy obiektu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self}},
* {{Code|tabela_elementow_strony_kodow}} - jak w: {{LinkPatrz|tabela_elementow_strony_kodow}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod}}.
Funkcja wykorzystuje elementy tablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, ustalane przez funkcję: {{LinkŚródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}, w tablicy: {{Code|tabela_elementow_strony_kodow}} {{LinkPatrz|tabela_elementow_strony_kodow}}.
== {{Śródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}}{{Code|p.RozpatrywanieElementuUchwytuNumeracji}} ==
Funkcja wsadzająca utworzoną tablicę z podanym uchwytem do ogólnej tablicy pozycji nazwanych tabel z uchwytami o danej pozycji z nim. Ta tablicą jest: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a własciwie do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self}},
* {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} - kod uchwytu podanego do szablonu stronicowego z odpowiednim uchwytem,
* {{Code|tab_numer}} {{Patrz|tab_numer}} - tablica z numerkami ilości elementów w tablicy parametrów nazwanych z uchwytami, w danym elemencie analizowania strony z uchwytami i obiektami,
* {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} - tablica analizowania obiektów, danej strony,
* {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} - kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki, nazwa książki i nazwa artykułu książki,
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}},
* {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} - czy artykuł aktualny wyświetlany w przeglądarce,
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} - nazwa artykułu aktualna lub bieżąca,
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} - tablica bazy kodów parsowania strony,
* {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} - tablica analizy poszczególnych elementów kodów, do szybszego działania skryptu,
* {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} - tablica zbierająca odkodowany i rozwinięty uchwyt, do analizowania w nim zebranych kategorii, według modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}, uruchamiana w szablonach stronicowych z funkcjami '''stronicowego parsera'''.
Funkcja rozwija: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a potem je odkodowuje przy pomocy: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a jeżeli ona nie jest pusta, to dla tego jest uruchamiana funkcja: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie}}.
Tworzona jest tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, z uchwytem, jako pierwszy parametr.
Jest sprawdzane, czy element: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, jest fałszywy, jeżeli tak, to dalej jest sprawdzane, czy są elementy numerowane nazwanej tablicy: {{Code|tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2}}, o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, a jeżeli jest pusta - na samym końcu jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, czyli jest inicjowana na wartość: {{Code|true}}, to dalej jest sprawdzane, czy dla elementów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy dana książka jest poza zakresem obsługiwanym, czyli rewidowane jest, czy jest ustawiony kod problemu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, czy a jeżeli jednak nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}, ustawiające pewne elementy błędu, jeżeli trzeba to zrobić.
Gdy tabela: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, odpowiada nienilowej tablicy, wtedy element: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, jest wstawiany na odpowiedniej pozycji, ale przeważnie nie na końcu, przy pomocy funkcji: {{LzLua|table.insert}}, dzięki określonej tabeli: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, przeciwnie na jej końcu.
Funkcja zwraca element tablicowy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
== {{Śródtytuł|p.RozpatrywanieSzablonuObiektuDoNumeracji}}{{Code|p.RozpatrywanieSzablonuObiektuDoNumeracji}} ==
Funkcja, która uruchamia funkcję: {{LinkŚródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}} {{Patrz|p.RozpatrywanieElementuUchwytuNumeracji}}, dla istniejącego uchwytu w postaci nazwanej o kluczu: {{Code|uchwyt}} {{Patrz|uchwyt}}, lub nienazwanej - w postaci numeru jego uchwytu o kluczu o wartości zmiennej: {{Code|numer_numeracji}} {{Patrz|numer_numeracji}}.
Funkcja ta wsadza tabele z uchwytem na odpowiednią pozycję w odpowiedniej nazwanej tabeli o nazwie obiektu o wartości: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, w ogólnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
Dokładniej własciwie w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. To jest robione poprzez funkcję: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
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)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self}},
* {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}}- tabela parametrów szablonu,
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu}},
* {{Code|czy_artykul_korzystany}} - jak w: {{LinkPatrz|czy_artykul_korzystany}},
* {{Code|numer_numeracji}} - jak w: {{LinkPatrz|numer_numeracji}},
* {{Code|tab_numer}} - jak w: {{LinkPatrz|tab_numer}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}},
* {{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|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie}}.
Funkcja zwraca wartość: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, którą jest pewna tablica, uzyskaną z wywołania funkcji: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
28z2wgpt5odzpcueru2dwfr9r0uq4th
556346
556343
2026-09-14T17:13:58Z
Persino
2851
556346
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Przedstawione sa tu funkcje do zbierania informacji o uchwycie.
== {{Śródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}{{Code|p.UstawUchwytyWeTablicyBezNumeracji}} ==
Funkcja zbiera uchwyty, dla obiektów {{ZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}, bez numeracji, nie licząc obiektów tekstu, takich jak {{s|Śródtekst}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.UstawUchwytyWeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,lista_dwuelementowa,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} {{Patrz|self}} | _1 = Zmienna obiektowa modułu {{Code|{{ld2|StronicowyParser/ZbieranieDanychStron}}}} {{Patrz|StronicowyParser/ZbieranieDanychStron}}.
| 2 = {{Code|tabela_elementow_strony_kodow}} {{Patrz|tabela_elementow_strony_kodow}} | _2 = Zmienna zbierająca takie kody jak {{LinkZobaczTeż|p.UstawUchwytyWeTablicyBezNumeracji}}.
| 3 = {{Code|nazwa_obiektu}} {{Patrz|nazwa obiektu}} | _3 = Nazwa obiektu.
| 4 = {{Code|lista_dwuelementowa}} {{Patrz|lista_dwuelementowa}} | _4 = Pozycja w normalnej tabeli uchwytów i przeważnie ich numeracji, a tutaj dla tego obiektu.
| 5 = {{Code|kod}} {{Patrz|kod}} | _5 = Numer kodu dla tego obiektu.
}}
Funkcja zbiera elementy tablicy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, w tablicy wielowymiarowej o pierwszym elemencie wymiaru o wartości: {{Code|nazwa obiektu}} {{LinkPatrz|nazwa obiektu}}, i trzecim o wartości: {{Code|kod}} {{LinkPatrz|kod}}, oraz o drugim: {{Code|uchwyty_bez_numeracji}} {{Patrz|uchwyty_bez_numeracji}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
== {{Śródtytuł|p.WydobywanieUchwytuZeTablicyBezNumeracji}}{{Code|p.WydobywanieUchwytuZeTablicyBezNumeracji}} ==
Funkcja wydowywa tablicę uchwytu dla pozycji, ale nie sam uchwyt, dla podtablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, o danym kodzie: {{Code|kod}} {{LinkPatrz|kod}}, dla nazwy obiektu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.WydobywanieUchwytuZeTablicyBezNumeracji(self,tabela_elementow_strony_kodow,nazwa_obiektu,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|tabela_elementow_strony_kodow}} | _2 = Jak w: {{LinkPatrz|tabela_elementow_strony_kodow}}.
| 3 = {{Code|nazwa_obiektu}} | _3 = Jak w: {{LinkPatrz|nazwa_obiektu}}.
| 4 = {{Code|kod}} | _4 = Jak w: {{LinkPatrz|kod}}.
}}
Funkcja wykorzystuje elementy tablicy: {{Code|uchwyty_bez_numeracji}} {{LinkPatrz|uchwyty_bez_numeracji}}, ustalane przez funkcję: {{LinkŚródtytuł|p.UstawUchwytyWeTablicyBezNumeracji}}, w tablicy: {{Code|tabela_elementow_strony_kodow}} {{LinkPatrz|tabela_elementow_strony_kodow}}.
== {{Śródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}}{{Code|p.RozpatrywanieElementuUchwytuNumeracji}} ==
Funkcja wsadzająca utworzoną tablicę z podanym uchwytem do ogólnej tablicy pozycji nazwanych tabel z uchwytami o danej pozycji z nim. Ta tablicą jest: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, a własciwie do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.RozpatrywanieElementuUchwytuNumeracji(self,uchwyt_obiektu,tab_numer,tablica_zmiennych,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, nazwa_obiektu, czy_artykul_korzystany,nazwa_modulu_aktualna_czy_biezaca,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|uchwyt_obiektu}} {{Patrz|uchwyt_obiektu}} | _2 = Kod uchwytu podanego do szablonu stronicowego z odpowiednim uchwytem.
| 3 = {{Code|tab_numer}} {{Patrz|tab_numer}} | _3 = Tablica z numerkami ilości elementów w tablicy parametrów nazwanych z uchwytami, w danym elemencie analizowania strony z uchwytami i obiektami.
| 4 = {{Code|tablica_zmiennych}} {{Patrz|tablica_zmiennych}} | _4 = Tablica analizowania obiektów, danej strony.
| 5 = {{Code|nazwa_przestrzeni}} {{Patrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{Patrz|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} {{Patrz|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} {{Patrz|nazwa_artykulu}} | _5 = Kolejno: nazwa przestrzeni nazw, nazwa przestrzeni książki, nazwa książki i nazwa artykułu książki.
| 6 = {{Code|nazwa_obiektu}} | _6 = Jak w: {{LinkPatrz|nazwa_obiektu}}.
| 7 = {{Code|czy_artykul_korzystany}} {{Patrz|czy_artykul_korzystany}} | _7 = Czy artykuł aktualny wyświetlany w przeglądarce.
| 8 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{Patrz|nazwa_modulu_aktualna_czy_biezaca}} | _8 = Nazwa artykułu aktualna lub bieżąca.
| 9 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul}} | _9 = Tablica bazy kodów parsowania strony.
| 10 = {{Code|tablica_danych_parametrow_szablonu_strony}} {{Patrz|tablica_danych_parametrow_szablonu_strony}} | _10 = Tablica analizy poszczególnych elementów kodów, do szybszego działania skryptu.
| 11 = {{Code|KtorySzablonMaZwracacKategorie}} {{Patrz|KtorySzablonMaZwracacKategorie}} | _11 = Tablica zbierająca odkodowany i rozwinięty uchwyt, do analizowania w nim zebranych kategorii, według modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}, uruchamiana w szablonach stronicowych z funkcjami '''stronicowego parsera'''.
}}
Funkcja rozwija: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}, funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a potem je odkodowuje przy pomocy: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a jeżeli ona nie jest pusta, to dla tego jest uruchamiana funkcja: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie}}.
Tworzona jest tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, z uchwytem, jako pierwszy parametr.
Jest sprawdzane, czy element: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, jest fałszywy, jeżeli tak, to dalej jest sprawdzane, czy są elementy numerowane nazwanej tablicy: {{Code|tablica_zmiennych.tabela_listy_danych_analizy_ksiazki2}}, o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, a jeżeli jest pusta - na samym końcu jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_obiektu}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_obiektu}}, czyli jest inicjowana na wartość: {{Code|true}}, to dalej jest sprawdzane, czy dla elementów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki}}, czy dana książka jest poza zakresem obsługiwanym, czyli rewidowane jest, czy jest ustawiony kod problemu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, czy a jeżeli jednak nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}, ustawiające pewne elementy błędu, jeżeli trzeba to zrobić.
Gdy tabela: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, odpowiada nienilowej tablicy, wtedy element: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, jest wstawiany na odpowiedniej pozycji, ale przeważnie nie na końcu, przy pomocy funkcji: {{LzLua|table.insert}}, dzięki określonej tabeli: {{Code|tab_numer}} {{LinkPatrz|tab_numer}}, przeciwnie na jej końcu.
Funkcja zwraca element tablicowy: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
== {{Śródtytuł|p.RozpatrywanieSzablonuObiektuDoNumeracji}}{{Code|p.RozpatrywanieSzablonuObiektuDoNumeracji}} ==
Funkcja, która uruchamia funkcję: {{LinkŚródtytuł|p.RozpatrywanieElementuUchwytuNumeracji}} {{Patrz|p.RozpatrywanieElementuUchwytuNumeracji}}, dla istniejącego uchwytu w postaci nazwanej o kluczu: {{Code|uchwyt}} {{Patrz|uchwyt}}, lub nienazwanej - w postaci numeru jego uchwytu o kluczu o wartości zmiennej: {{Code|numer_numeracji}} {{Patrz|numer_numeracji}}.
Funkcja ta wsadza tabele z uchwytem na odpowiednią pozycję w odpowiedniej nazwanej tabeli o nazwie obiektu o wartości: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}, w ogólnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}.
Dokładniej własciwie w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych}}, do jej podtablicy o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, a jeszcze lepiej, w jego podtablicy o kluczu o wartości reprezentowanej przez: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu}}. To jest robione poprzez funkcję: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
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)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self}}.
| 2 = {{Code|tabela_parametrow_szablonu}} {{Patrz|tabela_parametrow_szablonu}} | _2 = Tabela parametrów szablonu.
| 3 = {{Code|tablica_zmiennych}} | _3 = Jak w: {{LinkPatrz|tablica_zmiennych}}.
| 4 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _4 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki}}, {{LinkPatrz|nazwa_ksiazki}} i {{LinkPatrz|nazwa_artykulu}}.
| 5 = {{Code|nazwa_obiektu}} | _5 = Jak w: {{LinkPatrz|nazwa_obiektu}}.
| 6 = {{Code|czy_artykul_korzystany}} | _6 = Jak w: {{LinkPatrz|czy_artykul_korzystany}}.
| 7 = {{Code|numer_numeracji}} | _7 = Jak w: {{LinkPatrz|numer_numeracji}}.
| 8 = {{Code|tab_numer}} | _8 = Jak w: {{LinkPatrz|tab_numer}}.
| 9 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _9 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca}}.
| 10 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _10 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul}}.
| 11 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _11 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony}}.
| 12 = {{Code|KtorySzablonMaZwracacKategorie}} | _12 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie}}.
}}
Funkcja zwraca wartość: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, którą jest pewna tablica, uzyskaną z wywołania funkcji: {{LinkPatrz|p.RozpatrywanieElementuUchwytuNumeracji}}.
Ta tablica: {{Code|lista_dwuelementowa}} {{LinkPatrz|lista_dwuelementowa}}, ma pierwszy element, którym jest element numerowany na pozycji: {{Code|1}}, którym jest uchwyt danego obiektu o wartości zmiennej: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
b68p4eq1epunhyw3xigntaf83dymyt6
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom II
4
63909
556337
554654
2026-09-14T15:45:59Z
Persino
2851
/* {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} */
556337
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}}{{Code|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}} ==
Funkcja sprawdza, czy dany artykuł należy do artykułów, któregoś spisu treści, a jeżeli nie, to dla stron, które nie należą do kategorii z ustawionym problemem: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, ale do nieaktualnej strony jest ustawiony problem: {{Code|brak spisów treści do dołączonych stron}} {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}. Natomiast dla aktualnej dla stron tej samej kategorii ustawiany jest problem: {{Code|brak spisu treści do korzystanych stron}} {{Patrz|brak spisu treści do korzystanych stron}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
== {{Śródtytuł|p.PusteParametryReferencji}}{{Code|p.PusteParametryReferencji}} ==
Funkcja sprawdza, jeśli są podane parametry szablonu stronicowego, które są w kategorii: {{lk|Szablony stronicowe}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ewentualnie: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale zawsze z: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, czy są one puste.
A jeżeli one istnieją i są takie, to są ustawione problemy typu, jeśli ich wcześniej nie ustawiono:
* {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}}, kolejno dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, kolejno z numerami problemów: {{Code|1}}, {{Code|2}} i {{Code|3}}.
Dla obiektu o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{Hr}}
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)...end;
</syntaxhighlight>
Paraametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}} - uchwyt obiektu, podane w danym szablonie stronicowym,
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
== {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} ==
Funkcja z parametrów pudełkowych nazwy artykułu {{ZobaczTeż|nazwa artykułu}}: {{Code|nazwa artykułu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, albo {{Code|1}}, gdy bezuchwytowe lub {{Code|2}}, i pełnej nazwy książki {{ZobaczTeż|pełna nazwa strony}}: {{Code|nazwa książki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} albo, {{Code|2}}, gdy bezuchwytowe lub {{Code|3}}.
To wszystko jest liczone z: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub przy użyciu parametru również: {{Code|bezuchwytowe}} {{Patrz|bezuchwytowe}}, gdy mamy szablon stronicowy {{lk|Szablony stronicowe}}, bezuchwytowy, wtedy {{Code|true}}, przeciwnie {{Code|false/nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|bezuchwytowe}} - jak w: {{LinkPatrz|bezuchwytowe}}.
Funkcja uzyskane obie nazwy książkowe dekoduje funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a później jest liczony adres bezwzględny podręcznika ze względnego dzięki: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, przy pomocy podstawy: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, podobnie, ale wcześniej jest liczona nazwa artykułu {{LinkZobaczTeż|nazwa artykułu}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale tutaj adres względny jest liczony z podstawy o ciągu pustym jako drugi parametr.
Na podstawie pełnej nazwy książki {{LinkZobaczTeż|pełna nazwa strony}}: jest liczona bardziej jej wersja pełniejsza, jeżeli to jest w ogóle możliwe z: {{Code|{{sr|#p["PełnaNazwaStronicowejKsiążki"]|p=Książkowe}}}}. A póżniej z tego wszystkiego są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji nazw: {{Code|{{ld2|Nazwy}}}}.
Na samym końcu funkcji są zwracane parametry nazw, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5juyk24jlry4bgb0cx3g2vbfxltxp51
556347
556337
2026-09-14T17:18:04Z
Persino
2851
556347
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}}{{Code|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji}} ==
Funkcja sprawdza, czy dany artykuł należy do artykułów, któregoś spisu treści, a jeżeli nie, to dla stron, które nie należą do kategorii z ustawionym problemem: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, ale do nieaktualnej strony jest ustawiony problem: {{Code|brak spisów treści do dołączonych stron}} {{Code|brak spisów treści do dołączonych stron}} {{Patrz|brak spisów treści do dołączonych stron}}. Natomiast dla aktualnej dla stron tej samej kategorii ustawiany jest problem: {{Code|brak spisu treści do korzystanych stron}} {{Patrz|brak spisu treści do korzystanych stron}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji(self,nazwa_przestrzeni, nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
== {{Śródtytuł|p.PusteParametryReferencji}}{{Code|p.PusteParametryReferencji}} ==
Funkcja sprawdza, jeśli są podane parametry szablonu stronicowego, które są w kategorii: {{lk|Szablony stronicowe}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ewentualnie: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale zawsze z: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, czy są one puste.
A jeżeli one istnieją i są takie, to są ustawione problemy typu, jeśli ich wcześniej nie ustawiono:
* {{Code|puste parametry szablonów stronicowych linkujących}} {{Patrz|puste parametry szablonów stronicowych linkujących}}, kolejno dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, kolejno z numerami problemów: {{Code|1}}, {{Code|2}} i {{Code|3}}.
Dla obiektu o nazwie: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{Hr}}
Definicja skrótowa funkcji
<syntaxhighlight lang="lua">
function p.PusteParametryReferencji(self, nazwa_przestrzeni, nazwa_przestrzeni_ksiazki, nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu, nazwa_obiektu)...end;
</syntaxhighlight>
Paraametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}} | _3 = Uchwyt obiektu, podane w danym szablonie stronicowym.
| 4 = {{Code|nazwa_obiektu}} | _4 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
== {{Śródtytuł|p.SzablonyReferencjiParametrowych}}{{Code|p.SzablonyReferencjiParametrowych}} ==
Funkcja z parametrów pudełkowych nazwy artykułu {{ZobaczTeż|nazwa artykułu}}: {{Code|nazwa artykułu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, albo {{Code|1}}, gdy bezuchwytowe lub {{Code|2}}, i pełnej nazwy książki {{ZobaczTeż|pełna nazwa strony}}: {{Code|nazwa książki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} albo, {{Code|2}}, gdy bezuchwytowe lub {{Code|3}}.
To wszystko jest liczone z: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub przy użyciu parametru również: {{Code|bezuchwytowe}} {{Patrz|bezuchwytowe}}, gdy mamy szablon stronicowy {{lk|Szablony stronicowe}}, bezuchwytowy, wtedy {{Code|true}}, przeciwnie {{Code|false/nil}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzablonyReferencjiParametrowych(tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca,bezuchwytowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _2 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|bezuchwytowe}} | _3 = Jak w: {{LinkPatrz|bezuchwytowe}}.
}}
Funkcja uzyskane obie nazwy książkowe dekoduje funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, a później jest liczony adres bezwzględny podręcznika ze względnego dzięki: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, przy pomocy podstawy: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, podobnie, ale wcześniej jest liczona nazwa artykułu {{LinkZobaczTeż|nazwa artykułu}}, czyli: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, ale tutaj adres względny jest liczony z podstawy o ciągu pustym jako drugi parametr.
Na podstawie pełnej nazwy książki {{LinkZobaczTeż|pełna nazwa strony}}: jest liczona bardziej jej wersja pełniejsza, jeżeli to jest w ogóle możliwe z: {{Code|{{sr|#p["PełnaNazwaStronicowejKsiążki"]|p=Książkowe}}}}. A póżniej z tego wszystkiego są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji nazw: {{Code|{{ld2|Nazwy}}}}.
Na samym końcu funkcji są zwracane parametry nazw, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
nr4a5ey6e2o222cfnoaybp02aj69pac
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom III
4
63910
556338
554661
2026-09-14T15:48:06Z
Persino
2851
/* {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} */
556338
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie.
== {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} ==
Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę.
Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}},
* {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} ==
Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}.
Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}.
Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny.
Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony.
Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} ==
Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule.
Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
4zmvchne1zmjxvoqy0gx0co05qpoudo
556339
556338
2026-09-14T15:49:07Z
Persino
2851
/* {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} */
556339
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie.
== {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} ==
Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę.
Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}},
* {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} ==
Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}.
Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}.
Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny.
Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony.
Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} ==
Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule.
Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
1z19duiozc0xj49w321asb886sf98b4
556340
556339
2026-09-14T15:49:55Z
Persino
2851
/* {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} */
556340
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie.
== {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} ==
Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę.
Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_inna_wartosc_tekst}} - jak w: {{LinkPatrz|czy_inna_wartosc_tekst}},
* {{Code|tab_nazwy}} - jak w: {{LinkPatrz|tab_nazwy}}.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} ==
Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}.
Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} - funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}.
Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny.
Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony.
Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} ==
Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule.
Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ep90r4fk24mj43c16s3yi106342cmgw
556348
556340
2026-09-14T17:22:13Z
Persino
2851
556348
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Tutaj są przedstawione inne funkcje do zbierania informacji o projekcie.
== {{Śródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}}{{Code|p.ZbieranieInformacjiStronyWoluminowychPozycji}} ==
Funkcja zbierania informacji na stronie dla szablonów stronicowych: {{lk|Szablony stronicowe}}, bezuchwytowych, ale nie kontenerowych. Gdy parametr nie ma wartości, lub ma wartość fałszywą: {{Code|czy_inna_wartosc_tekst}} {{Patrz|czy_inna_wartosc_tekst}}, wtedy jest wywoływana funkcja: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}, która liczy kolejne nazwy charaktertyzujące nazwy dla danego artykułu książki dla danej strony, przeciwnie parametry nazw są ściagane z: {{Code|tab_nazwy}} {{Patrz|tab_nazwy}}, ta tabela składa się numerowanych elementów, którymi są nazwy charakyteryzujące stronę.
Gdy jakaś nazwa artylułu strony została policzona, wtedy są liczone pozostałe nazwy z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} - ona słuzy do zbierania informacji o stronie, a tuż przed nim, jeśli istnieje: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiStronyWoluminowychPozycji(self,tabela_parametrow_szablonu,KtorySzablonMaZwracacKategorie,czy_inna_wartosc_tekst,tab_nazwy)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|KtorySzablonMaZwracacKategorie}} | _3 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 4 = {{Code|czy_inna_wartosc_tekst}} | _4 = Jak w: {{LinkPatrz|czy_inna_wartosc_tekst}}.
| 5 = {{Code|tab_nazwy}} | _5 = Jak w: {{LinkPatrz|tab_nazwy}}.
}}
== {{Śródtytuł|p.ZbieranieKontenerowychInformacji}}{{Code|p.ZbieranieKontenerowychInformacji}} ==
Funkcja do zbierania informacji, która z parametrów pudełkowych: {{Code|{{m|Pudełko}}}}, czyli: {{Code|nazwa przestrzeni nazw}} {{Patrz|nazwa przestrzeni nazw}} i {{Code|nazwa jednostki}} {{Patrz|nazwa jednostki}}, z nich są liczone parametry nazw charakteryzujące artykuł książki strony. A na samym końcu jest uruchamiana funkcja: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} {{Patrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}.
Funkcja służy do analizy szablonów kontenerowych, na podstawie jego parametrów pudełkowych modułu: {{Code|{{m|Szablonowe}}}}, tzn. {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}} (przestrzeń, w której mieśści się strona) i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}} (nazwa strony).
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacji(self,tabela_parametrow_szablonu,czy_szablon_pudelkowy_strony_zbiorczej,KtorySzablonMaZwracacKategorie)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{Patrz|czy_szablon_pudelkowy_strony_zbiorczej}} | _3 = funkcja potrzebna do funkcji zbierającej {{LinkPatrz|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}, określającej, czy mamy szablon pudełkowy strony zbiorczej, taki jak: {{Code|{{s|StronaSubst}}}}, czy: {{Code|{{s|KsiążkaSubst}}}}, zobacz stronę: {{Code|{{lr2|Moduły/StronicowyParser/StronaSubst}}}}.
| 4 = {{Code|KtorySzablonMaZwracacKategorie}} | _4 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
Gdy nie ma parametrów pudełkowych funkcja się natychmiast zakańcza, lub parametr: {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, jest pusta, lub nawet gdy zawierają kody wykrywane przez funkcję: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}.
Z nazwy jednostki jest wydzielana nazwa jednostki właściwa bez nazwy nagłówka, póżniej obie nazwy są też dekodowane funkcją: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}, czyli wszystko z: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}.
Z tych dwóch nazwy jest liczony adres, ewentualnie względny, który za pomocą funkcji: {{Code|{{sr|#p["PrzeszkałćAdresWzględnyStronyNaBezwzględny"]|p=Techniczne}}}}, jest wyliczany adres bezwzględny.
Dalej są liczone nazwy charakteryzujące artykuł danej książki strony, czyli: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, z tego adresu strony.
Przedostatnia funkcja, która jest uruchamiana przed funkcją zbierającą jest: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli istnieje.
== {{Śródtytuł|p.ZbieranieKontenerowychInformacjiReferencji}}{{Code|p.ZbieranieKontenerowychInformacjiReferencji}} ==
Funkcja zbiera informacje o stronie. Na podstawie informacji o nazwie artykułu i pełnej nazwy książki liczy parametry nazw charakteryzujące artykuł, co na tej podstawiwe liczy parametry pudełkowe i wywołuje funkcję główną przez inną funkcję, też zbierającą, i zbiera informacje o artykule.
Funkcję wykorzystuje się przy analizie linków, jeśli chcemy, by ładowana strona inna niż bieżąca, w której miesci się ten link, została przeanalizowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieKontenerowychInformacjiReferencji(self,tabela_parametrow_szablonu,nazwa_modulu_aktualna_czy_biezaca)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|tabela_parametrow_szablonu}} | _2 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _3 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jako parametry zwracane przez funkcję: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}. Funkcja wyznacza parametry pudełkowe {{m|Pudełko}}, tzn.: {{Code|nazwa przestrzeni nazw}} {{LinkPatrz|nazwa przestrzeni nazw}}, i {{Code|nazwa jednostki}} {{LinkPatrz|nazwa jednostki}}, na podstawie tych nazw. Funkcja na samym końcu wywołuje funkcję zbierającą dane ze strony: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyWoluminowychPozycji}} (z uwzględnieniem parametru: {{Code|tab_nazwy}} {{LinkPatrz|tab_nazwy}}), która z kolei w niej jest uruchamiana procedura zwracająca wartość, czyli: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
3b93wthjn27e4ayj1gza27hbfk5c0xm
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom IV
4
63911
556349
554499
2026-09-14T17:24:43Z
Persino
2851
556349
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony}}{{Code|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony}} ==
Funkcja sprawdza niepoprawność nazwy strony i na podstawie tego ustawia pewne kody problemów.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SprawdzanieCzyJestNiepoprawnaNazwaStrony(self, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,__FUNKCJA_SPRAWDZANIE)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|nazwa_obiektu}} | _2 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _3 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 4 = {{Code|uchwyt_obiektu}} | _4 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 5 = {{Code|__FUNKCJA_SPRAWDZANIE}} {{Patrz|__FUNKCJA_SPRAWDZANIE}} | _5 = Funkcja uruchamiana, jeśli jest ustawiona, na wypadek poprawności strony.
}}
W przypadku niepoprawności strony, gdy strona modułu jest aktualna (bieżąca), wtedy sprawdzany jest kod problemu, czy jest ustawiony, tzn.: {{Code|nieprawidłowe nazwy korzystanych stron}} {{Patrz|nieprawidłowe nazwy korzystanych stron}}, przy pomocy funkcji: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli nie ma takiego, to wtedy jest uruchamiana funkcja: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}. Podobnie jest dla niekorzystanej strony, wtedy jest problem dla kodu: {{Code|nieprawidłowe nazwy stron dołączanych do stron}} {{Patrz|nieprawidłowe nazwy stron dołączanych do stron}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
bpds6nfyb0a8baq80iu93t9mn7bqq0s
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom V
4
63912
556344
554670
2026-09-14T16:53:30Z
Persino
2851
/* {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} */
556344
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje zbieranie informacji o linkach na stronie.
== {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} ==
Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono.
Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} {{Patrz|obiekt}} - obiekt, obsługiwany przez tą funkcję linku,
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} - kod obiektu dla: {{LinkPatrz|obiekt}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} - czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}.
Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli:
<syntaxhighlight lang="lua">
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
</syntaxhighlight>
== {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} ==
Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}.
Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim.
{{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}.
Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje.
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza.
=== {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} ===
Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}.
Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}.
=== Dalszy opis funkcji ===
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku.
{{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
{{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów.
{{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
== {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} ==
Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
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)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}.
=== Wyznaczanie i przetwarzanie uchwytu ===
Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
=== Wyznaczanie nazw linku stronicowego ===
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}.
=== Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie ===
Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}.
=== Przypadek uchwytu pustego ===
Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}.
=== Istniejący niepusty uchwyt linku ===
Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji:
<syntaxhighlight lang="lua">
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
</syntaxhighlight>
==== Nazwa artykułu nie istnieje ====
Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza.
==== Dodatkowo istnieje tylko nazwa artykułu ====
Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
==== Dodatkowo istnieje tylko nazwa książki ====
Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja.
==== Liczenie parametrów nazw wywołań szablonowych linków ====
Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}.
==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ====
Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
pb53o4kyv7oqw7hxivme5du2yh6zlzs
556345
556344
2026-09-14T16:54:24Z
Persino
2851
/* {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} */
556345
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje zbieranie informacji o linkach na stronie.
== {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} ==
Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono.
Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} {{Patrz|obiekt}} - obiekt, obsługiwany przez tą funkcję linku,
* {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} - kod obiektu dla: {{LinkPatrz|obiekt}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} - czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}.
Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli:
<syntaxhighlight lang="lua">
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
</syntaxhighlight>
== {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} ==
Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} - kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|uchwyt_obiektu}} - jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}.
Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim.
{{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}.
Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje.
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza.
=== {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} ===
Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}.
Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}.
=== Dalszy opis funkcji ===
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku.
{{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
{{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów.
{{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
== {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} ==
Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
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)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|self}} - jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|obiekt}} - jak w: {{LinkPatrz|obiekt}},
* {{Code|kod}} - jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_zmiennych}} - jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tabela_parametrow_szablonu}} - jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_obiektu}} - jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|nazwa_modulu_aktualna_czy_biezaca}} - jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_analizy_obiektow_strony_dany_modul}} - jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|tablica_danych_parametrow_szablonu_strony}} - jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|KtorySzablonMaZwracacKategorie}} - jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}},
* {{Code|czy_pobierz}} - jak w: {{LinkPatrz|czy_pobierz}}.
=== Wyznaczanie i przetwarzanie uchwytu ===
Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
=== Wyznaczanie nazw linku stronicowego ===
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}.
=== Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie ===
Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}.
=== Przypadek uchwytu pustego ===
Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}.
=== Istniejący niepusty uchwyt linku ===
Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji:
<syntaxhighlight lang="lua">
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
</syntaxhighlight>
==== Nazwa artykułu nie istnieje ====
Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza.
==== Dodatkowo istnieje tylko nazwa artykułu ====
Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
==== Dodatkowo istnieje tylko nazwa książki ====
Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja.
==== Liczenie parametrów nazw wywołań szablonowych linków ====
Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}.
==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ====
Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
5wy84chfs7y2mry5as5yimdkbge0ndk
556350
556345
2026-09-14T17:33:29Z
Persino
2851
556350
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
Funkcje zbieranie informacji o linkach na stronie.
== {{Śródtytuł|p.LinkowanieFinalizowaniePrac}}{{Code|p.LinkowanieFinalizowaniePrac}} ==
Funkcja wsadza uchwyt obiektu, wskazujący na aktualną stronę, do pewnej tablicy, ściśle: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, i ewentualnie ustawia pewne problemy, jeśli je nie ustawiono.
Funkcja dla tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, dla jego podtablicy: {{Code|linkobiekt}} {{Patrz|linkobiekt}} (jest to tablica, w której są zbierane w różnych podtablicach, w zależności od obiektu, uchwyty różnych linków na bieżącej stronie), w jego podtablicy o wartości elementu: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, co taka tablica, to nic innego jak obiekt: {{Code|linkobiekttab}} {{Patrz|linkobiekttab}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieFinalizowaniePrac(self,obiekt,kod,tablica_zmiennych,nazwa_obiektu,uchwyt_obiektu,tablica_analizy_obiektow_strony_dany_modul,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|obiekt}} {{Patrz|obiekt}} | _2 = Obiekt, obsługiwany przez tą funkcję linku.
| 3 = {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}} | _3 = Kod obiektu dla: {{LinkPatrz|obiekt}}.
| 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 5 = {{Code|nazwa_obiektu}} | _5 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 6 = {{Code|uchwyt_obiektu}} | _6 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 7 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _7 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 8 = {{Code|czy_pobierz}} {{Patrz|czy_pobierz}} | _8 = Czy to jest szablon typu {{Code|Pobierz}} {{Patrz|Pobierz}}, jak: {{s|PobierzŚródtekst}}.
}}
Funkcja sprawdza, czy nie został ustawiony element {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{Patrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}, a jeżeli tak, to dalej, czy nie ma elementów numerowanych, tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, przy pomocy funkcji: {{Code|{{sr|#p["CzySąElementyNumerowaneTablicy"]|p=Parametry}}}}, a jeśli również tak, czy ma ye elementy, to dalej jest sprawdzane, czy został ustawiony problem: {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy: {{Code|{{sr|#p.CzyJestTakiElementTabeliProblemu|p=StronicowyParser/Problemy}}}}, a jeżeli nie jest, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Na samym końcu tej instrukcji warunkowej jest ustawiana prawdziwość elementu: {{Code|tablica_zmiennych.sprawdzenie_dokonane_linku}} {{LinkPatrz|tablica_zmiennych.sprawdzenie_dokonane_linku}}.
Dalej poza instrukcją warunkową w tablicy: {{Code|linkobiekttab}} {{LinkPatrz|linkobiekttab}}, jest wstawiany obiekty o wartości: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Następnie, gdy element: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, jest ustawiony na {{Code|true}}, wtedy dla: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, pewna tablica, jest wstawiana do tablicy: {{Code|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane}}, jeśli istnieje, a jeśli nie, to jest tworzona, jako tablica, wtedy też jest to robione. Tą czynnością wstawiany tabelę, do tej tablicy, czyli:
<syntaxhighlight lang="lua">
table.insert(tablica_zmiennych.tablica_szablonu_tekstu_linkowe_korzystane,{{nazwa_obiektu,uchwyt_obiektu,},{obiekt,kod,},});
</syntaxhighlight>
== {{Śródtytuł|p.LinkowanieInnychStron}}{{Code|p.LinkowanieInnychStron}} ==
Funkcja do sprawdzania innych stron niż aktualna, a jeżeli dana strona została już sprawdzona, to powtórnie nie jest już rewidowana. Funkcja ustawia w głównej tablicy aktualnej tabeli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} pewne podtablice.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkowanieInnychStron(self,obiekt,kod,tablica_zmiennych, nazwa_obiektu, nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, uchwyt_obiektu,czy_pobierz)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 5 = {{Code|nazwa_obiektu}} | _5 = jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 6 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _6 = Kolejo jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 7 = {{Code|uchwyt_obiektu}} | _7 = Jak w: {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 8 = {{Code|czy_pobierz}} | _8 = Jak w: {{LinkPatrz|czy_pobierz}}.
}}
Najpierw jest uruchamiana funkcja: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, która w razie poprawności nazwy strony, czyli inaczej nazw tstrony, charakteryzowanej przez, tzn.: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamia funkcję zdefiniowaną w nim.
{{Tab}}Ta funkcja sprawdza, czy któraś z parametrów nazw istnieje, a jeżeli nie, to dalej jest inicjowana zmienna: {{Code|tablica_zmiennych2}} {{Patrz|tablica_zmiennych2}}, pustą tablicą i podobnie {{Code|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tablica_zmiennych2.tabela_listy_danych_analizy_ksiazki2}}, to uruchamiana jest: {{LinkŚródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do zbierania informacji o stronie nowej lub przebadanej (wtedy zostają zwrócone parametry z wcześniejszego jego analizowania, jak była nowa). Funkcja zwraca trzy parametry, tzn. {{Code|tabela_listy_danych_analizy_ksiazki0}} {{Patrz|tabela_listy_danych_analizy_ksiazki0}}, {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}} i {{Code|czy_inna}} {{Patrz|czy_inna}}.
Te parametry mogą przyjmować wartość {{Code|nil}}, lub pierwszy {{Code|0}}, drugi, to nic innego jest jak: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, a trzeci parametr jest wtedy równy {{Code|true}}, gdy strona jest nowa, ale niekorzystana, a {{Code|false}}, bieżąca, ale niekorzystana, a gdy {{Code|nil}}, gdy np. zawartość strony nie istnieje.
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, istnieje, wtedy jest spraqdzane, czy któreś z parametrów: {{LinkPatrz|tablica_zmiennych2}} i {{LinkPatrz|czy_inna}}, nie istsnieje, wtedy ta funkcja się zakańcza.
=== {{Śródtytuł|JuzPoliczone}}{{Code|JuzPoliczone}} ===
Dla obiektów, dla których jest ustawiony parametr: {{Code|czy_pobierz}} {{LinkPatrz|czy_pobierz}}, co dalej w tym rozgałęzieniu instrukcji warunkiwej jest uruchamiana funkcja szablonów tekstu, czyli: {{Code|{{sr|#p.UstawianiePobierz|p=StronicowyParser/SzablonyTekstu}}}}, aby również później za pomocą innych funkcji przeanalizować również tekst w szablonach takich jak: {{s|Śródtekst}}, również wskaazywanych przez: {{s|PobierzŚródtekst}}.
Dalej jest tworzona tablica, jeśli nie istnieje, tzn. {{Code|tablica_zmiennych2.dane_juz_policzone}} {{Patrz|tablica_zmiennych2.dane_juz_policzone}}, czyli jest inicjowana pustą tablicą. Dalej jest tworzona, jeśli nie istnieje, tablica wielowymiarowa po kolei, o kluczach kolejno o wartościach: {{Code|nazwa_obiektu}} {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, a jeżeli ta ostatnia wartość tej tablicy była wcześniej, to zwracane jest {{Code|true}}, przeciwnie {{Code|false}}, a tej ostatniej wartości tej tablicy jest przydzielana wartość {{Code|true}}.
=== Dalszy opis funkcji ===
Gdy parametr: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest równy {{Code|0}}, ale nie {{Code|nil}}, wtedy jest sprawdzane, czy artykuł został wcześniej zrewidowany według: {{LinkŚródtytuł|JuzPoliczone}}, a jeżeli tak to jest zakańczany, a gdy ten parametr takiej wartośsci nie przyjmuje, wtedy tylko jest uruchamiana ta funkcja bez żadnego warunku.
{{Tab}}Następnie jest uruchamiana funkcja: {{Code|{{sr|#p.DodawanieDoBazySzablonuTekstuStronyKorzystanejElementyInnejStrony|p=StronicowyParser/SzablonyTekstu}}}}, do przydzielenia pewnych zmiennych z: {{Code|tablica_zmiennych2}} {{LinkPatrz|tablica_zmiennych2}}, do tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
{{Tab}}Jest sprawdzane, czy dany artykuł należy do spisu, jeżeli nie, to są ustawiane pewne kody problemów w tablicy problemów, tzn. {{LinkŚródtytuł|p.SprawdzanieCzyJestTakiElementSpisuRzeczyWoluminowychPozycji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
Następnie jest sprawdzane, czy podany uchwyt: {{Code|uchwyt_obiektu}} {{LinkPatrz|uchwyt_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}, który jest podany w szablonach linków na aktualnej stronie, czy jest tylko jeden na stronie sprawdzanej, a jeżeli nie jest tak, to jest sprawdzane, czy nie istnieje ustawiony problem: {{Code|błędy uchwytów korzystanych stron}} {{Patrz|błędy uchwytów korzystanych stron}}, funkcją: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to taki problem jest dodawany dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
{{Tab}}Uruchamiana jest dalej funkcja: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, do sprawdzania pustości pewnych parametrów.
{{Tab}}Gdy tabela: {{Code|tabela_listy_danych_analizy_ksiazki0}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki0}}, jest jednak równa wartości odpowiadającej fałszywej, wtedy jeśli nie istnieje problem: {{Code|błąd wewnętrzny modułu lua stronicowego parsera}} {{Patrz|błąd wewnętrzny modułu lua stronicowego parsera}}, co jest rewidowane elementem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, a jeżeli tak, to dodawany jest taki problem do tabeli problemów na podstawie: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
== {{Śródtytuł|p.GeneralneLinkowanie}}{{Code|p.GeneralneLinkowanie}} ==
Funkcja zbiera uchwyty, na aktualnej lub innej stronie, a także je analizuje w odpowiedni sposób, modyfikuje tablica aktualnego modułu, czyli: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, na podstawie poszczególnych wskazywanych artykułów na biężącej książce lub innej, która zbiera raz informacje o danej stronie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
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)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 5 = {{Code|tabela_parametrow_szablonu}} | _5 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 6 = {{Code|nazwa_obiektu}} | _6 = Jak w: {{LinkPatrz|nazwa_obiektu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 7 = {{Code|nazwa_modulu_aktualna_czy_biezaca}} | _7 = Jak w: {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 8 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _8 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 9 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _9 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 10 = {{Code|KtorySzablonMaZwracacKategorie}} | _10 = Jak w: {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 11 = {{Code|czy_pobierz}} | _11 = jak w: {{LinkPatrz|czy_pobierz}}.
}}
=== Wyznaczanie i przetwarzanie uchwytu ===
Funkcja wyznacza uchwyt z tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}} lub {{Code|1}}, a później w kodzie jest on kompletowany funkcją: {{Code|{{sr|#p.DekodowanieNazwySzablonu|p=StronicowyParser/Potrzebne}}}}, a następnie rozwijany w niej, a później jest dekodowany: {{Code|{{sr|#p.DecodeHtml|p=Html}}}}.
=== Wyznaczanie nazw linku stronicowego ===
Funkcja liczy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, wywołujac: {{LinkŚródtytuł|p.SzablonyReferencjiParametrowych|StronicowyParser/ZbieranieDanychStron/Tom II}}.
=== Generowanie możliwych kodów problemów i ustawianie zmiennej, przy której mają być zwrócone kategorie ===
Na samym końcu jest uruchamiana: {{Code|KtorySzablonMaZwracacKategorie}} {{LinkPatrz|KtorySzablonMaZwracacKategorie|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrem o tym uchwycie, wyliczonym wcześniej. Ta funkcja mówi przy jakim obiekcie szablonów stronicowych ma być uruchomione generowanie kategorii błędów wyniku uruchomień na stronie poszczególnych szablonów stronicowych, w kategorii na: {{lk2|Szablony stronicowe}}.
=== Przypadek uchwytu pustego ===
Gdy uchwyt jest pusty lub nie istnieje, wtedy uruchamia się: {{LinkŚródtytuł|p.SprawdzanieCzyJestNiepoprawnaNazwaStrony|StronicowyParser/ZbieranieDanychStron/Tom IV}}, następnie: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, z kodem problemu: {{Code|brak uchwytu}}.
=== Istniejący niepusty uchwyt linku ===
Gdy uchwyt: {{Code|uchwyt}} {{LinkPatrz|uchwyt|StronicowyParser/ZbieranieDanychStron/Tom I}}, istnieje i jest niepusty, wtedy jest wyznaczana nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z niej samej, lub jesli ona nie istnoeje, wtedy jeśli nazwa ksiązki istnieje, tylko, wtedy ta nazwa zaczyna być pusta, przeciwnie {{Code|nil}}, wtedy mamy do czynienia ze stroną główną podręcznika. Wiemy to z instrukcji:
<syntaxhighlight lang="lua">
nazwa_artykulu=(nazwa_artykulu or (nazwa_ksiazki and "" or nil));
</syntaxhighlight>
==== Nazwa artykułu nie istnieje ====
Gdy nazwa artykułu nie istnieje, wtedy wywoływana jest: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Wtedy funkcja się zakańcza.
==== Dodatkowo istnieje tylko nazwa artykułu ====
Jeśli nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, jest niepusta, i gdy nazwa książki nie istnieje, wtedy są liczone parametry nazw, oprócz nazwy artykułu, bo jest policzona, więc te {{ZobaczTeż|nazwy}}: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, z parametrów charakteryzujących nazwę aktualnego artykułu, a jeśli jednak nazwa książki jest pusta, to są sprawdzane parametry w: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}.
==== Dodatkowo istnieje tylko nazwa książki ====
Gdy nazwa artykułu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, nie istnieje, i gdy nazwa książki: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} jest niepusta, wtedy nazwa artykułu zaczyna istnieć i inicjujemy wtedy ją wartością pustą, a jeśli pusta, to za zaczyna być potem generowanie kodów błędów funkcją: {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}, by potem się zakończa ta funkcja.
==== Liczenie parametrów nazw wywołań szablonowych linków ====
Przeciwnie są liczone parametry: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, tą samą metodą, co w punkcie: {{LinkZobaczTeż|nazwy}}.
==== Uruchamianie właściwych funkcji linków do programowego zrozumienia jego parametrów ====
Gdy nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są porównywane z nazwami, którymi się przypisje jak w: {{LinkZobaczTeż|nazwy}} - one są sobie nierówne, wtedy uruchamiamy funkcję: {{LinkŚródtytuł|p.LinkowanieInnychStron}}, przeciwnie wtedy działają dwie funkcje uruchomione po kolei, tzn.: {{LinkŚródtytuł|p.LinkowanieFinalizowaniePrac}} i {{LinkŚródtytuł|p.PusteParametryReferencji|StronicowyParser/ZbieranieDanychStron/Tom II}}. Co potem jest zakończenie działania funkcji.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7gkxt5cny5ly1dv7kewm9fdlort7kfn
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I
4
63913
556351
554758
2026-09-14T17:45:01Z
Persino
2851
556351
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}{{Code|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}} ==
Funkcja służy do zbierania informacji o danej analizowanej stronie, którego główną częścią jest strona korzystana, w której gromadzą się informacji też z pozostałych.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi(self,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu, czy_artykul_korzystany,tablica_zmiennych,czy_szablon_pudelkowy_strony_zbiorczej)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|self}} | _1 = Jak w: {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}},
| 2 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}}, {{Code|nazwa_ksiazki}} i {{Code|nazwa_artykulu}} | _2 = Kolejno jak w: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 3 = {{Code|czy_artykul_korzystany}} | _3 = Jak w: {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 4 = {{Code|tablica_zmiennych}} | _4 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 5 = {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} | _5 = Jak w: {{LinkPatrz|czy_szablon_pudelkowy_strony_zbiorczej|StronicowyParser/ZbieranieDanychStron/Tom III}}.
}}
=== {{Śródtytuł|__FUNKCJA_ARTYKULU}}{{Code|__FUNKCJA_ARTYKULU}} ===
Funkcja do tworzenia tabeli artykułów z innymi jej parametrami wielowymiarowtmi, a jeżeli owe pośrednie, i nie tylko, istnieją, to te tabele są zwracane lub, a te nieistniejące są nowo tworzone, jako puste tablice, tworząc w ten sposób wielowymoarowac tabelę, zależną od parametrów nazw artykułu, ale ksiązki lub niby-ksiażki.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function __FUNKCJA_ARTYKULU(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry artykułu}}:
{{OpisParametrów
| 1 = {{Code|nazwa_przestrzeni}}, {{Code|nazwa_przestrzeni_ksiazki}} i {{Code|nazwa_ksiazki}} | _1 = Kolejno jak: {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}},
| 2 = {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} | _2 = Nazwa artykułu w książce, bez pełnej nazwy książki.
}}
==== Tworzenie tabel książkowych danego artykułu ====
Poniżej są tworzone podtabele puste, jeśli nie zostały utworzone.
Funkcja, która w tabeli: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, w podtabeli o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{Patrz|tabela_listy_danych_analizy_ksiazki}}, o dalszym kluczu: {{Code|dane_analizy_stron}} {{Patrz|dane_analizy_stron}}, która istnieje, tworzy tabele trójwymiarową kolejno po prarametrach: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, te tabele pośrednie są wtedy tworzone, jeśli nie istnieją, a gdy istnieją to nie są tworzone, tylko funkcja przechodzi do dalszych.
Dalej tworzona jest podtabela, jeśli nie istnieje o nazwie {{Code|lista_podstron_woluminu}} {{Patrz|lista_podstron_woluminu}}.
Następnie generowana jest podtabela, jeśli nie istnieje, o kluczu: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
==== Wartości zwracane ====
* Da tutaj ustawiane zmienne z kluczem: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i bez niej.
* Poniższe zmienne tabel nazw danej ksiązki można przyporządkować kolejnym nazwą danego artykułu, gdy podano nazwę artykułu ksiązki, lub nie, wtedy to samo, ale dla nazw książki, tzn.:
** {{Code|tablica_przestrzeni}} {{Patrz|tablica_przestrzeni}}, {{Code|tablica_przestrzeni_ksiazki}} {{Patrz|tablica_przestrzeni_ksiazki}}, {{Code|tablica_ksiazki}} {{Patrz|tablica_ksiazki}} i {{Code|artykul_analizowany}} {{Patrz|artykul_analizowany}} - są kolejno przyporządkowane zmiennym: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
===== Przypadek istnienia nazwy artykułu =====
Funkcja zwraca kolejno elementy, jeśli parametr: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, został podany, wtedy:
<syntaxhighlight lang="lua">
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki,artykul_analizowany;
</syntaxhighlight>
===== Przypadek nieistnienia =====
Przeciwnie zwracany jest zbiór zmiennych po kolei:
<syntaxhighlight lang="lua">
return tablica_przestrzeni,tablica_przestrzeni_ksiazki,tablica_ksiazki;
</syntaxhighlight>
Co to są za zmienne, wiadomo z ich nazw, po prostu są to pewne pośrednie, i nie tylko, tabele.
=== {{Śródtytuł|__FUNKCJA_POBIERANIE}}{{Code|__FUNKCJA_POBIERANIE}} ===
Funkcja zwraca parametry strony aktualnej, analizowanej jeszcze raz, aby ją nie powtórnie rewidować, lub podobnie dla innego artykułu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function __FUNKCJA_POBIERANIE(nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_artykulu)...end;
</syntaxhighlight>
Parametry funkcji są takie same jak w punkcie {{LinkZobaczTeż|parametry artykułu}}.
==== Strona bieżąca, jako artykuł niekorzystany, czyli przy fałszywej wartości: {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, dla strony już analizowanej, ale jeszcze nie do końca ====
Dla jeszcze raz analizowanego artykułu i bieżącego, ale tym razem niekorzystanego, zwracane są parametry:
<syntaxhighlight lang="lua">
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
</syntaxhighlight>
Tabela: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron}}, tam są dane zebrane z aktualnego artykułu.
===== Zwracane parametry dla strony bieżącej analizowanej jako niebieżąca =====
Dla elementu: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, jeżeli dany powtórnie bieżący artykuł był już rewidowany, to zwracane są elementy:
<syntaxhighlight lang="lua">
return 0,nil,nil,nil,nil,nil,self.tabela_listy_danych_analizy_ksiazki.dane_zebrane_ze_stron,false;
</syntaxhighlight>
* Na końcu wartość: {{Code|false}}, wskazuje na aktyalny bieżący artykuł, powtórnie jeszcze raz analizowany.
* Zmienna o kluczu: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron}}, tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, a to wewnątrz: {{Code|self}} {{Patrz|self}}, to nic innego jak tabela zmiennych danego artykułu: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
==== Strona niebieżąca, ale niekorzystana, według zmiennej: {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}} ====
Przedstawiony jest tutaj przypadek pobierania zmiennych strony niebieżącej, ale niekorzystanej.
===== Ustawianie analizy spisu treści artykułu dla strony dołączonej, innej niż bieżąca =====
Dla innej takiej strony jest tworzony parametr, jeżeli jest włączona analiza, dla klucza: {{Code|analiza_spis_tresci}} {{Patrz|analiza_spis_tresci}}, według tego jest tworzony wartością prawdziwą parametr o innym znów kluczu: {{Code|analiza_spis_tresci_doloczone}} {{Patrz|analiza_spis_tresci_doloczone}}:
<syntaxhighlight lang="lua">
if(self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci)then
self.tabela_listy_danych_analizy_ksiazki.analiza_spis_tresci_doloczone=true;
end;
</syntaxhighlight>
===== Pobieranie elementów przeanalizowanej strony =====
Dla: {{Code|dane_zebrane_ze_stron}} {{Patrz|dane_zebrane_ze_stron}}, to podtabela: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu}}, z kluczem: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, o nazwie takiej samej, jak ten parametr zwracany.
====== Analiza spisu treści artykułu już tego sprawdzonego ze zebranymi informacjami o niej, zbieranie dodatkowych elementów ======
Jeśli mamy stronę niekorzystaną, czyli parametr: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}},j est fałsszywy, wtedy przy istnieniu funkcji, takim że jest elementem: {{Code|TOCSPIS_FUNCTION}} {{Patrz|TOCSPIS_FUNCTION}}, tabeli artykułu: {{Code|tabela_artykul}} {{LinkPatrz|tabela_artykul}}, ona jest uruchamiana, jeśli zwróci prawdziwa wartość, w takim wypadku jako element jest usuwany z niej.
====== Zwracane parametry takiej strony ======
Funkcja zwraca wynik, dla innego artykułu niż bieżąca:
<syntaxhighlight lang="lua">
return 0,tabela_artykul,lista_artykolow,tabela_ksiazka,tabela_przestrzeni_ksiazki,tabela_przestrzeni,dane_zebrane_ze_stron,true;
</syntaxhighlight>
* A na końcu wartość {{Code|true}}, wskazuje, że strona niebieżąca jeszcze raz powtórnie jest analizowana.
* Tutaj element: {{Code|dane_zebrane_ze_stron}}, oznacza tyle, co: {{LinkPatrz|dane_zebrane_ze_stron}}.
==== Zwracane parametry, gdy coś jest nie tak z nią, lub strona nie została przeanalizowana, tzn. informacje o niej nie zostały zebrane ====
Przeciwnie jest zwracane: {{Code|true}} - gdu strona jeszcze nie została przeanalizowana, lub {{Code|nil}} - gdy coś jest nie tak ze zmiennymi strony, jeśli tabela: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}} w {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, lub podtatela: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, gdy któreś z nich nie istnieje, lub oba z nich.
=== {{Śródtytuł|StronaSubstFunkcja}}{{Code|StronaSubstFunkcja}} ===
Funkcja sprawdza, czy jest prawda: {{Code|czy_szablon_pudelkowy_strony_zbiorczej}} {{LinkPatrz|czy_szablon_pudelkowy_strony_zbiorczej|StronicowyParser/ZbieranieDanychStron/Tom III}}, fałsz: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawda: {{Code|tabela_artykul}} {{Patrz|tabela_artykul}} i fałsz: {{Code|tabela_artykul.strona_zbiorcza}} {{Patrz|tabela_artykul.strona_zbiorcza}}, a jeśli tak, to inicjowane są funkcje definicjami:
<syntaxhighlight lang="lua">
local TakFun=function(frame) return "tak";end;local NieFun=function(frame) return "";end;
</syntaxhighlight>
Wtedy zmiennej: {{Code|tabela_artykul.strona_zbiorcza}} {{LinkPatrz|tabela_artykul.strona_zbiorcza}}, jest przydzielana wartość z funkcji: {{Code|{{sr|#p.AnalizaStronaSubst|p=StronicowyParser/StronaSubst}}}}, na podstawie tego, czy aktualna strona jest stroną zbiorczą, a może nie.
=== {{Śródtytuł|InneInformacjePrzebneDoAnalizowanejKsiazki}}{{Code|InneInformacjePrzebneDoAnalizowanejKsiazki}} ===
Funkcja do zbierania informacji o spisie artykułów książkowych i ich licencjach oraz ewentualnie zebrane informacje ze stron: {{lk2|Szablony nawigacyjne układu autonawigacji do autonawigacji podręczników}}, z szablonu, w któreś tej pozycji w: {{s|Układ autonawigacji}}, i ze spisów podanej w niej jako parametry.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function InneInformacjePrzebneDoAnalizowanejKsiazki()...end;
</syntaxhighlight>
Parametry funkcji:
* brak.
==== {{Śródtytuł|__FUNKCJA_SPISU}}{{Code|__FUNKCJA_SPISU}} ====
Funkcja do inicjowania parametrów spisu danej ksiązki, do której należy dany artykuł, np. ten, uzyskanych z analizy wszystkich spisów danej książki.
Definicja skrotowa funkcji:
<syntaxhighlight lang="lua">
local function __FUNKCJA_SPISU(tablica_ksiazki,czy_podac_adres)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}} | _1 = Tablica dla analizowanej książki.
| 2 = {{Code|czy_podac_adres}} {{Patrz|czy_podac_adres}} | _2 = Czy podać adres bazowego woluminu.
}}
Tablicy: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, jest inicjowany jej element: {{Code|spis}} {{Patrz|spis}}, tabelą: {{Code|tabela_artykulow}} {{Patrz|tabela_artykulow}}.
Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, ma wartość prawdziwą, to iniciowana jest podtablica, tablicy: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, o kluczu: {{Code|licencja}} {{Patrz|licencja}}, tabelą: {{Code|tabela_licencji_spisu_tresci}} {{Patrz|tabela_licencji_spisu_tresci}}.
Dalej kolejno elementy podtablice o kluczach: {{Code|nazwa_bazowego_spisu}} {{Patrz|nazwa_bazowego_spisu}}, {{Code|tab_inne_spisy}} {{Patrz|tab_inne_spisy}} i {{Code|dodatkowe_strony_woluminu}} {{Patrz|}dodatkowe_strony_woluminu}}, tabeli: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i inicjowane są tabelami o takich samych nazwach, jak te klucze dwa, a ostatni tabelą: {{Code|dodatkowe_artykuly}} {{Patrz|dodatkowe_artykuly}}.
Tabeli: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, o kluczu w nim: {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{Patrz|adres_woluminu_bazowego_spisu_rzeczy}}, jest równa wartości: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{Patrz|adres_ksiazki_glownego_spisu_tresci}}, jeśli istnieje: {{Code|czy_podac_adres}} {{LinkPatrz|czy_podac_adres}}, lub przeciwnie wartością {{Code|nil}}.
==== Dalszy opis funkcji - etap I ====
Jeżeli dla aktualnego artykułu dla książki nie ustawiono kodu: {{Code|strony poza zakresem obsługiwanym}} {{Patrz|strony poza zakresem obsługiwanym}}, wtedy są analizowane elementy opisane w nagłówku opisywanej funkcji, pod warunkiem, jeżeli istnieją parametry nazw książki: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Gdy artykuł jest analizowany, wtedy jeśli parametr: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, ma wartość prawdziwą, jeśli przy nieistnieniu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, tablicy {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, z podtablicą: {{Code|CzyArtykułKsiążki}} {{Patrz|CzyArtykułKsiążki}}, wtedy to coś jest inicjowane wartością na {{Code|tak}}. Co będzie znaczyło, że artykuł bieżący ma spis, czy spisy.
Gdy już spis jeszcze nie analizowano, a jeżeli juz został zanalizowany, to sprawdzany jest: {{Code|czy_spis_analizowano}}, tablicy: {{LinkPatrz|tablica_ksiazki}}. Jeśli ten parametr jest prawdziwy, to ten artykuł ma spis już zanalizowany, a więc jeszcze raz on nie będzie już badany.
A jeśli jednak spisy książki nie zostały sprawdzone i sparsowane, wtedy uruchamia się następne rozgałęzienie pętli.
Uruchamia się dalej funkcja: {{Code|{{sr|#p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji|p=StronicowyParser/SpisTreści}}}}, w nim są uruchamiane w pewien sposób dwie funkcje. Ta funkcja zwraca parametry: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, {{Code|tabela_licencji_spisu_tresci}} {{LinkPatrz|tabela_licencji_spisu_tresci}}, {{Code|nazwa_glownego_spisu}} {{Patrz|nazwa_glownego_spisu}}, {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, {{Code|dodatkowe_artykuly}} {{LinkPatrz|dodatkowe_artykuly}} i {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}.
===== {{Code|{{sr|#p.ZbieranieInformacjiSpisuRzeczyWoluminuEwentualnieWedleAutonawigacji|p=StronicowyParser/SpisTreści}}}} =====
Ta funkcja służy do parsowania spisów i innych omówionych elementów książki danego artykułu.
====== Pierwsza anonimowa funkcja ======
Dla analizowanej pierwszej funkcji, ona jest uruchamiana, wtedy kiedy zostały zebrane wszystkie informacje ze spisów, wtedy dla elementu: {{Code|tablica_ksiazki_strona}} {{LinkPatrz|tablica_ksiazki_strona}}, jest sprawdzane, czy jego element: {{Code|spis}} {{LinkPatrz|spis}}, istnieje, jeśli istnieje, zatem wtedy elementy z: {{Code|_strona_temp}} {{Patrz|_strona_temp}}, inicjujemy tymi z: {{Code|_strona}} {{Patrz|_strona}}, z elementów zmiennych (parametrów) tej funkcji, oraz potem inicjujemy inne jego podelementy, tzn.: {{Code|spis}} {{LinkPatrz|spis}}, {{Code|licencja}} {{LinkPatrz|licencja}}, {{Code|nazwa_bazowego_spisu}} {{LinkPatrz|nazwa_bazowego_spisu}}, {{Code|tab_inne_spisy}} {{LinkPatrz|tab_inne_spisy}}, {{Code|dodatkowe_strony_woluminu}} {{Patrz|dodatkowe_strony_woluminu}} i {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy}}, elementu: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, tymi saamymi elementami, ale dla innej strony, tzn.: {{Code|tablica_ksiazki_strona}} {{LinkPatrz|tablica_ksiazki_strona}}.
Funkcja się uruchamia, kiedy dany spis danej książki jest przekierowaniem do całkiem innej strony, nie tylko w tym podręczniku, ale może być też w innym, ale nie jednocześnie.
Elementy tablicowe książkowe:
* {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}} - element książkowy tablicowy, który jest podtablicą właśnie że dla: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu}}, co jest właśnie tablica dla kluczy, którymi są właśnie artykuły, a każdy taki artykuł ma tablicę, a przodek tej tablicy, to nic innego jak: {{Code|dane_analizy_stron}} {{LinkPatrz|dane_analizy_stron}}, tablicy {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, a to {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}.
* {{Code|tablica_ksiazki_strona}} {{Patrz|tablica_ksiazki_strona}} - znaczenie tej tablicy jest takie samo, jak dla: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, tylko ta tablica jest do tej strony, co wskazuje przekierowanie '''mechanizmu {{NS|k=mw|w=tak|l=tak}}''', a: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, jest własnie to przerowanie.
Też jest inicjowany element tej pierwszej zmiennej książkowej o kluczu: {{Code|referencja_do_nowej_formy_spisu}} {{Patrz|referencja_do_nowej_formy_spisu}}, według:
<syntaxhighlight lang="lua">
tablica_ksiazki.referencja_do_nowej_formy_spisu={tablica_przestrzeni_strona,tablica_przestrzeni_ksiazki_strona,tablica_ksiazki_strona,};
</syntaxhighlight>
Funkcja wtedy zwróci wartość liczbową: {{Code|1}}, a w innych przeciwnych wypadkach ta funkcja nic nie zwraca.
====== Druga anonimowa funkcji ======
Ta funkcja działa, gdy parametry strony, tzn.: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są równe podobnym parametrom z: {{Code|_ref_spis}} {{Patrz|_ref_spis}}, z parametrów tej funkcji, tzn. czy spis jest analizowanym korzystanym artykułem. Ta funkcja słuzy do tego, aby nie analizować dwa razy tego samego spisu, raz jako spis, a za innym razem jako artykuł z uchwytami.
Ta funkcja kopiuje dokładnie elementy z: {{Code|_ref_spis}} {{LinkPatrz|_ref_spis}}, temu z: {{Code|_ref}} {{Patrz|_ref}}, te elementy, to nic innego jak: {{Code|tekst_rozwiniety_calego_artykulu}} {{Patrz|tekst_rozwiniety_calego_artykulu}}, {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}, czyli tworzymy elementy takie: {{Code|tekst_rozwiniety_calego_artykulu_ref}} {{Patrz|tekst_rozwiniety_calego_artykulu_ref}}, {{Code|tablica_analizy_obiektow_strony_dany_modul_ref}} {{Patrz|tablica_analizy_obiektow_strony_dany_modul_ref}} i {{Code|tablica_danych_parametrow_szablonu_strony_ref}} {{Patrz|tablica_danych_parametrow_szablonu_strony_ref}}.
==== Dalszy opis funkcji - etap II ====
===== Przypadek nieistnienia spisu głównego książki =====
Gdy: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jest równa {{Code|0}}, dalej:
{{Tab}}Gdy to jest artykuł korzystany, tzn. zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość prawdziwą, wtedy przy pomocy funkcji: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, zgłaszany jest kod problemu: {{Code|korzystana strona główna nie istnieje}}.
{{Tab}}Przeciwnie natomiast, tzn. strona nie jest bieżąca, to przy pomocy: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}, ustawiany jest kod problemu: {{Code|dołączone strony główne nie istnieją}} {{Patrz|dołączone strony główne nie istnieją}}.
===== Przypadek istnienia spisu głównego w przekierowaniu spisu głównym innej książki =====
Ten rozdział przedstawia analizę spisową spisu danego artykułu książki.
====== Wstęp analizy wyszukiwania przekierowań, na co one wskazują w przypadku bieżącego artykułu ======
A jeśli gdy, ta zmienna: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, jedynie istnieje wtedy, jeśli to jest tabelka, dalej jeśli: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, ma wartość, to:
* Dalej jest tworzony element: {{Code|tablica_ksiazki_stara}} {{Patrz|tablica_ksiazki_stara}}, na podstawie tego, aby zachować ten stary element, przed zmianą, inicjując to tablicą: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}.
* Uruchamiana jest: {{LinkŚródtytuł|__FUNKCJA_SPISU}}, z pierwszym parametrem: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i drugą wartością: {{Code|true}}.
* Dalej przy pomocy funkcji: {{Code|{{sr|#p.OdpowiednikNaPrzemianArtykularnychStronWoluminu|p=StronicowyParser/Potrzebne}}}}, uzyskiwany jest jego odpowiedniek nieprzekierowaniowy, danego przekierowania, lub ten sam adres, gdy to nie jest właśnie nim, czyli: {{Code|artykul}} {{Patrz|artykul}}, i kod uzyskanego wyniku: {{Code|kod_wyniku}} {{Patrz|kod_wyniku}}.
Kolejne nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, są liczone z: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, po kolejnych numerkach.
====== Analiza błędów zwróconych przez funkcję zwracającą, na co wskazuje przekierowanie, wraz z kodem przypadku ======
; Przypadek stron przekierowań, jak i nie{{dk}}
Gdy {{ZobaczTeż|sprawdzanie_i_pobieranie}}: {{LinkPatrz|kod_wyniku}}, jest równy: {{Code|1}} lub {{Code|2}}, wtedy uzyskujemy kolejne wartości z: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE}}, pobierająca elementy artykularne, z ostatnim parametrem: {{Code|artykul}} {{LinkPatrz|artykul}}, w takim razie uzyskujemy pewne wartości.
* Gdy pierwszy parametr nie ma wartości, to zwracamy tą wartość, z drugą wartością {{Code|true}}, co potem funkcja nadrzędna zostaje zakończona.
* Gdy pierwsza wartość istnieje, ale taki artykuł już został przeanalizowany, wtedy jest analizowany funkcją: {{LinkŚródtytuł|StronaSubstFunkcja}}, z poprzednimi wartościami zwracanymi, co poprzednio.
; Ogólny, nawet pod tym, co opisuje poprzedni opis, wykonywany zawsze{{dk}}
Dla {{ZobaczTeż|razem_sprawdzanie_i_pobieranie}} wartości {{LinkPatrz|kod_wyniku}}, od {{Code|1}} do {{Code|4}}, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU}}, tworząca elementy artykularne, które są zapisywane w tabeli: {{Code|tablica_ksiazki_stara}} {{LinkPatrz|tablica_ksiazki_stara}}, pod kluczem: {{Code|referencja_do_nowej_formy_spisu}} {{LinkPatrz|referencja_do_nowej_formy_spisu}}, która jest inicjowana tabelą z elementów nazw z: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}.
* Następnie jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_SPISU}}.
* Na samym końcu zwracana jest wartość, z dwoma wartościami: {{Code|nil}}, dalej jest kolejna wartoścć zwracana: {{Code|artykul}} {{LinkPatrz|artykul}}, i {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku}}.
===== W przypadku braku płynności w określeniu spisów z ustawieniami podręcznika =====
Gdy wartość: {{Code|adres_ksiazki_glownego_spisu_tresci}} {{LinkPatrz|adres_ksiazki_glownego_spisu_tresci}}, nie istnieje, wtedy jest tylko wywoływana funkcja: {{LinkŚródtytuł|__FUNKCJA_SPISU}}, z pierwszym parametrem: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki}}, i drugim: {{Code|false}}.
===== Przypadek istnienia przekierowania spisu w przestrzeni książkowej do przestrzeni nazw, nawet tych niby, do tego niepodręcznikowego =====
Jeśli wartość: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, nie jest tabelą, ale jest nie równa jeden, wtedy podobnie wywołujemy instrukcje jak w: {{LinkZobaczTeż|sprawdzanie_i_pobieranie}}.
===== Brak wyróżnionego spisu przy istnieniu głównego spisu książki =====
Jeśli: {{Code|tabela_artykulow}} {{LinkPatrz|tabela_artykulow}}, nie istnieje, wtedy dla: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawdziwego:
* Gdy nie istnieje problem z: {{Code|brak spisów treści do korzystanych książek na ich stronach głównych}} {{Patrz|brak spisów treści do korzystanych książek na ich stronach głównych}},
** Sprawdzany według: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, dla strony głównej podręcznika, który też jest artykułem, wtedy ustawiamy problem: {{Code|brak spisów treści do korzystanych książek na ich stronach głównych}} {{LinkPatrz|brak spisów treści do korzystanych książek na ich stronach głównych}}, przy: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
A dla {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} fałszywego:
* Dodajemy jedynie problem: {{Code|brak spisów treści do dołączonych książek na ich stronach głównych}} {{Patrz|brak spisów treści do dołączonych książek na ich stronach głównych}}, dzięki: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}.
=== {{Śródtytuł|PrzekierownieAwaryjne}}{{Code|PrzekierownieAwaryjne}} ===
Gdy: {{Code|kod_wyniku_przekierowan}} {{Patrz|kod_wyniku_przekierowan}}, ma wartość nieprzydzieloną, wtedy:
* Jest liczone przekierowanie na jąką stronę przekierowuje, na podstawie: {{Code|{{sr|#p.PrzekierowanieDoStrony|p=Techniczne}}}}.
; Jeśli przekierowanie istnieje, a funkcja zwraca wwartość nienilową{{dk}}
* Jeżeli równa jest nazwa ta {{Code|strona}} {{LinkPatrz|strona}} nazwie modułu {{Code|nazwa_modulu}} {{Patrz|nazwa_modulu}}, wtedy funkcja zwraca wartość {{Code|0}},
* Przeciwnie są liczone nazwy: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Które są wykorzystane do liczenia do funkcji: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE}}.
* A jeżeli pierwsza wartość nie istnieje, wtedy jest zwracana ta wartość,
* Przeciwnie dla wartości: {{Code|wartosc_wyniku}} {{Patrz|wartosc_wyniku}}, zero, i gdy wartość: {{Code|tabela_artykul}} {{LinkPatrz|tabela_artykul}}, przybiera wartość niefałszywą, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|StronaSubstFunkcja}}. Później zwracamy wartość: {{Code|wartosc_wyniku}} {{LinkPatrz|wartosc_wyniku}}.
Jeżeli te warunki nie są spełniony instrukcji warunkowej, wtedy jest uruchamiana funkcja: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU}}, do tworzenia tabel przy pomocy tej funkcji.
Liczona jest nazwa strony, na który wskazuje przekierowanie, czyli: {{Code|strona}} {{LinkPatrz|strona}}, zaczyna mieć wartość: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu}}.
=== {{Śródtytuł|StronaZbiorcza}}{{Code|StronaZbiorcza}} ===
* Jest to funkcja do sprawdzania, czy to jest strona zbiorcza. Dzzięki temu uzyskujemy wartość, jako powaidomienia, niezależnie od rodzaju strony zbiorczej, czy jest nią.
Jeśli {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} przybiera wartość prawdziwą, wtedy definiowane są funkcje według:
<syntaxhighlight lang="lua">
local TakFun=function(frame) return true;end;local NieFun=function(frame) return nil;end;
</syntaxhighlight>
Potem jest liczony wynik z: {{Code|{{sr|#p.AnalizaStronaSubst|p=StronicowyParser/StronaSubst}}}}, jeśli ten wynik przybiera jakąś wartość niefałszywą, wtedy zmiennej: {{Code|artykul_analizowany.strona_zbiorcza}} {{Patrz|artykul_analizowany.strona_zbiorcza}}, jest przydzielana wartość {{Code|tak}} lub przeciwnie wartość pustą, i on jest zwracany przez tą funkcję.
=== {{Śródtytuł|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}}{{Code|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}} ===
Ta funkcja zbiera informacje o danym obiekcie, jeżeli da się go sklasyfikować, do pewnej grupy obiektów z uchwytem numerowanym lub nie, lub tylko linku z uchwytem, albo szablonu, który liczy numer artykułu dla strony lub na podstawie tego numeru stronę.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego(tabela_parametrow_szablonu,nazwa_szablonu_wywolania,modyfikatory_wywolania,,obiekt,kod,tab_numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tabela_parametrow_szablonu}} | _1 = Jak w: {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 2 = {{Code|nazwa_szablonu_wywolania}} {{Patrz|nazwa_szablonu_wywolania}} | _2 = Nazwa danego szablonu.
| 3 = {{Code|modyfikatory_wywolania}} {{Patrz|modyfikatory_wywolania}} | _3 = Tabela modyfikatorów szablonu.
| 4 = {{Code|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} {{Patrz|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} | _4 = Kod danego szablonu.
| 5 = {{Code|obiekt}} | _5 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/ZbieranieDanychStron/Tom V}}.
| 6 = {{Code|kod}} | _6 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}.
| 7 = {{Code|tab_numer}} | _7 = Jak w: {{LinkPatrz|tab_numer|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
Funkcja liczy podzmienną: {{Code|strona_ze_szablonem_strona_start}} {{Patrz|strona_ze_szablonem_strona_start}} w tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, przydziela jej wartość {{Code|tak}}, jeżeli strona posiada w swoim w wikikodzie szablon {{s|StronaStart}}, równe jemu lub ich kolegom. Funkcja ustawia, czy na aktualnej stronie jest spis treści, dzięki wartości: {{Code|analiza_spis_tresci_korzystane}} {{Patrz|analiza_spis_tresci_korzystane}} w tej samej tablicy. Jeżeli ten szablon ma formatowanie, wtedy ustawiana jest wartość: {{Code|formatowanie}} {{Patrz|formatowanie}}, też w nim.
Jeżeli strona jest z szablonami strony zbiorczej, tzn. {{Code|{{sr|#p.strona_zbiorcza|p=StronicowyParser/obiekty}}}}, i nie ma ona zmiennych pudełkowych {{m|Pudełko}}, wtedy jest ona zakańczana. W tym rozgałęzeniu w dwóch punktach przydzielana jest wartość: {{Code|analiza_stron_korzystanych_zbiorczych}} {{Patrz|analiza_stron_korzystanych_zbiorczych}}, taka: {{Code|true}}, by drugi raz nie wejść do tego samego bloku w tych miejscach. Aby funkcja weszła w te miejsca, to musi być ona w stronie zbiorczej.
Ta funkcja wchodzi w ten blok opisany powyżej, gdy mamy artykuł korzystany według wartości prawdziwej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy istnieniu tabeli parametrów: {{Code|tabela_parametrow_szablonu}} {{LinkPatrz|tabela_parametrow_szablonu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
Gdy nazwa szablonu zawiera na początku znak dwukropka, tzn. {{Code|:}}, wtedy ta funkcja nic nie liczy, przeciwnie wykorzystuje szablon typu: {{s|Wypowiedzenie}} i jego kolegów, do zamieniania uchwytów na ich numeracje, a także tworzy linki na stronie aktualnej z numeracją przyporzadkowym pewnym uchwytym w tych szablonach. Funkcja dla szablonów tytułów: {{s|Śródtytuł}}, który jest zastępowany pustą wartością, on jest potrzebny, by jego szablon linku wskazywał na link do nagłówka, albo dla {{s|Śródtekst}}, by jego szablon pobierania wyświetlał jego kod wskazanym zmienną kluczem {{s|Parametr|klucz}}. Też tam są analizowane {{lk|szablony stronicowe}}, czyli nawigacji, czy numeracji, czy zbierania informacji o spisach bieżącej książki.
Szablon liczy, czy jest spis treści, na aktualnej lub dołączonej stronie, by to wykorzystać do jej liczenia. Także są liczone inne elementy szablonów stronicowych, by zamieniać jedne elementy na inne, wszystko jest dla szablonów w podkategorii kategorii: {{lk2|Szablony stronicowe}}.
=== {{Śródtytuł|GeneralnaAnalizaSzablonuStronicowegoParsera}}{{Code|GeneralnaAnalizaSzablonuStronicowegoParsera}} ===
Dunkcja uruchamiająca analizę szablonu na danej stronie.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function GeneralnaAnalizaSzablonuStronicowegoParsera(uzyskano_w_wyniku_parsowania_wywolanie_szablonu,obiekt,kod,tab_numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}} | _1 = Jak w: {{LinkPatrz|uzyskano_w_wyniku_parsowania_wywolanie_szablonu}}.
| 2 = {{Code|obiekt}} | _2 = Jak w: {{LinkPatrz|obiekt|StronicowyParser/ZbieranieDanychStron/Tom V}}.
| 3 = {{Code|kod}} | _3 = Jak w: {{LinkPatrz|kod|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
Funkcja uruchamia: {{Code|{{sr|#p.AnalizaSzablonuStronicowegoParsera|p=StronicowyParser/Potrzebne}}}}, która uruchamia funkcję: {{LinkŚródtytuł|AnalizaParametrowaOrazNazwowaStronicowegoIteratoraSzablonowego}}, do analizy danego szablonu.
=== {{Śródtytuł|IterowaniePoElementachTekstu}}{{Code|IterowaniePoElementachTekstu}} ===
Szablon iteruje funkcją: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, po szablonach w tekście, o dla każdego szablonu uruchamia funkcję: {{LinkŚródtytuł|GeneralnaAnalizaSzablonuStronicowegoParsera}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function IterowaniePoElementachTekstu(tekst_rozwiniety_calego_artykulu,tab_numer)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu}}.
| 2 = {{Code|tab_numer}} | _2 = Jak w: {{LinkPatrz|tab_numer|StronicowyParser/ZbieranieDanychStron/Tom I}}.
}}
=== Funkcje problemów szablonu nagłówka spisu treści ===
W tym rozdziale są przedstawione zdefiniowane funkcje problemów, jako rozszerzenie modułu: {{Code|{{ld2|StronicowyParser/Problemy}}}}, które są potrzebne też do generowania kategorii na podstawie modułu: {{Code|{{ld2|StronicowyParser/Kategorie}}}}. Też jest przedstawione generowane zmiennej, że kategorie są generowane w pierwszym lepszym {{Code|{{lk|Szablony stronicowe|szablonie stronicowym}}}}, które posiadają niepuste uchwyty.
==== {{Śródtytuł|KtorySzablonMaZwracacKategorieNaglowek}}{{Code|KtorySzablonMaZwracacKategorieNaglowek}} ====
; Gdy parametr{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, jak jest prawdziwy{{dk}}
* Jeśli nie jest ustawiony problem: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}, taki: {{Code|powtórka nagłowek w stronie korzystanej}} {{Patrz|powtórka nagłowek w stronie korzystanej}}, to jest wstawiany on jest dzięki: {{Code|{{sr|#p.UstawTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
* Przeciwnie jest to samo robione, tylko na początku z róznicą do poprzedniego jest ustawiany tą samą funkcją problem: {{Code|powtórka nagłówek w stronie dołączonej}} {{Patrz|powtórka nagłówek w stronie dołączonej}}.
; Inicjowanie zmiennej, który pierwszy szablon z kategorii{{dk}} {{nobold|{{lk2|Szablony stronicowe}}}}, ma zwracać kategorie, w wyniku błędu {{nobold|{{Code|{{ld|StronicowyParser|Stronicowego parssera}}}}}}{{dk}}
* A także jest inicjowana podzmienna, jeśli nie była taka: {{Code|{{sr|#self.tabela_listy_danych_analizy_ksiazki.ktory_szablon_stronicowy_ma_zwracac_kategorie}}}} {{Patrz|ktory_szablon_stronicowy_ma_zwracac_kategorie}} w tabeli {{LinkPatrz|tabela_listy_danych_analizy_ksiazki}}, który pierwszy szablon ma zwracać kategorie '''{{ld|StronicowyParser|Stronicowego Parsera}}''', czyli wśród szablonów stronicowych.
; Definicja skrótowa i parametry, funkcji{{dk}}
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function KtorySzablonMaZwracacKategorieNaglowek(numeracja_aktualna,nazwa_szablonu)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|KtorySzablonMaZwracacKategorieNaglowek-parametry}}:
{{OpisParametrów
| 1 = {{Code|numeracja_aktualna}} {{Patrz|numeracja_aktualna}} | _1 = Uchwyt szablonu nagłówka.
| 2 = {{Code|nazwa_szablonu}} {{Patrz|nazwa_szablonu}} | _2 = Nazwa szablonu.
}}
==== {{Śródtytuł|KtorySzablonMaZwracacKategorieTekst}}{{Code|KtorySzablonMaZwracacKategorieTekst}} ====
Jest to samo, co w funkcji: {{LinkŚródtytuł|KtorySzablonMaZwracacKategorieNaglowek}}, tylko z tą równicą, że mamy problem: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{Patrz|nagłówek w tekście rozdziału w stronie korzystanej}} lub {{Code|nagłowek w tekście rozdziału w stronie dołączonej}} {{Patrz|nagłowek w tekście rozdziału w stronie dołączonej}}.
Definicji skrótowa funkcji:
<syntaxhighlight lang="lua">
local function KtorySzablonMaZwracacKategorieTekst(numeracja_aktualna,nazwa_szablonu)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|KtorySzablonMaZwracacKategorieNaglowek-parametry}}. | komórka1 = tak
}}
=== {{Śródtytuł|CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu}}{{Code|CzyJestTakiProblemJakoElementTablicySzablonuNaglowkaPozaNapisemWprowadzeniaTekstu}} ===
Funkcja sprawdzająca, czy jest taki ustawiony problem: {{Code|nagłówek w tekście rozdziału w stronie korzystanej}} {{LinkPatrz|nagłówek w tekście rozdziału w stronie korzystanej}}, na podstawie: {{Code|{{sr|#p.CzyJestTakiProblemowyElement|p=StronicowyParser/Problemy}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CzyJestTakiProblemJakoElementTablicySzablonuNapisuWprowadzeniaTekstuPozaNim()...end;
</syntaxhighlight>
Parametry funkcji:
* Brak.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
co206m9ccgwu8jo2o9lunvmmxatpgs7
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom V
4
63920
556284
556283
2026-09-14T12:00:06Z
Persino
2851
/* Etapy wykonywania czynności */
556284
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki.
Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości.
Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}.
| 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania.
| 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak
}}
Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
{{OpisParametrów
| 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy.
| 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy.
}}
; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}}
Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}}
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
: A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
: Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
; Sprawdzanie niepustych linii{{dk}}
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
: Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
* Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej.
; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}}
* Zerowanie się pewnych wartości:
** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane.
Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}}
{{OpisParametrów
| 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje.
| 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce.
| 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak
| 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
}}
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty.
Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak
| 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać.
| 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst.
| 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie.
| 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}.
| 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}.
| 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
}}
; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
{{OpisParametrów
| 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak
| 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka.
| 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka.
| 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania.
| 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka.
| 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak
| 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak
| 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku.
| 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec.
| 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu.
| 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom.
}}
W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak
}}
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}.
Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia.
}}
=== Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny ===
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi.
=== Etapy alternatywy instrukcji warunkowej ===
W funkcji są trzy etapy instrukcji warunkowej:
* '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''.
==== Pierwszy etap ====
; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma.
* Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach.
* A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
* W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}}
* Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
==== Etap drugi ====
; To dotyczy, że takiego dopasowania pasującego nie znalazł.
* Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach.
* A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}.
* Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona.
* Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
==== Etap trzeci ====
; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
* Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}.
* A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
=== Parametry wychodzące z funkcji ===
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
=== Wytłumaczenia parametrów zwracanych ===
Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji:
{{OpisParametrów
| 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania,
| 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec,
| 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka,
| 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka.
}}
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak
| 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne.
| 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego.
| 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
}}
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
{{OpisParametrów
| 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak
| 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak
| 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak
}}
=== Etapy zwracania przez funkcję elementów ===
* Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej.
==== Uzyskanie linii według ogólnego wzoru ====
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
==== Początek i koniec uzyskanej linii według powyższego sposobu ====
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
==== Brak dopasowania linii ====
* A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
==== Rozdział równaniowy ====
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi.
==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ====
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków.
==== Przypadek istnienia linii nie składającej się ze znaków odstępów ====
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
==== Przypadek istnienia, lub nie, rozdziału zerowego ====
; Gdy znaleziono taki rozdział zerowy{{dk}}
* Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości.
* Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii.
; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}}
* Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi.
* Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz.
; Sytuacja niespełnienia poprzednich warunków{{dk}}
* Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}.
* Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz.
; Zwracane wartości{{dk}}
: Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}.
=== Etapy wykonywania czynności ===
Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link:
* Jeśli tak to zwraca wartość pradziwą.
* A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link.
Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana.
* Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą.
Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwraca wartość fałszywą.
=== Inne elementy dokumentacji ===
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak
| 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą.
| 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki.
| 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego.
}}
Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak
| 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa.
| 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa.
}}
Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
=== Parametry zwracane ===
; Pierwszy parametr{{dk}}
* Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem,
; Drugi parametr{{dk}}
* Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relacja, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem,
* Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych.
=== Początkowa kolejność wykonywania kodu ===
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
=== Sprawdzenie poprzez instrukcję warunkową ===
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
=== Kolejne dalsze kroki ===
* Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
* A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}.
=== Zwracane wartości funkcji ===
Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia.
==== Przypadek sukcesu ====
Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ====
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} ==
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end;
</syntaxhighlight>
Parametry funkcji:
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
hamty9qk1ewgomu0rv0jpbs0loezvvf
556285
556284
2026-09-14T12:01:33Z
Persino
2851
/* Parametry zwracane */
556285
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.AnalizowanieSekcjowe}}{{Code|p.AnalizowanieSekcjowe}} ==
Jest to funkcja do sprawdzania tekstu zawartości (tekstu rozdziału, bez zawartości nagłówka) napisu wprowadzenia tekstu sekcji, za pomocą funkcji zwracanej, czy ona spełnia pewne określone warunki.
Funkcja, gdy co jest nie tak, to zwraca wartość {{Code|true}}, i przy okazji może zerować pewne określone zmienne, jeśli ona przy tym została odpowiednio ustawiona, przeciwnie ona zawsze zwraca wartość {{Code|nil}}, czyli nie zwraca żadnej wartości.
Za pomocą tej funkcji można sprawdzić, czy funkcja zawiera niedozwolone znaki wikikodu, i dlatego zwraca tą prawdziwość.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.AnalizowanieSekcjowe(tekst_rozwiniety_calego_artykulu,czy_zeruj,tab_zmienne,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)
return function(liczba_koniec_naglowek,liczba_obiekt_start_nowe)
... ---- ciało funkcji zwracanej
end;
end;
</syntaxhighlight>
Parametry ogólne funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = {{Code|czy_zeruj}} {{Patrz|czy_zeruj}} | _2 = Czy ma zerować, ścisle określone zmienne, które mieszczą się w niezerowej tablicy zmiennych składowych, tzn. w: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}}.
| 3 = {{Code|tab_zmienne}} {{Patrz|tab_zmienne}} | _3 = Zmienne w nim do zerowania.
| 4 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}.| komórka4 = tak
}}
Parametry funkcji zwracanej dla tekstu rozważanego: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}:
{{OpisParametrów
| 1 = {{Code|liczba_koniec_naglowek}} {{Patrz|liczba_koniec_naglowek}} | _1 = Numer znaku, po którym coś rozważamy.
| 2 = {{Code|liczba_obiekt_start_nowe}} {{Patrz|liczba_obiekt_start_nowe}} | _2 = Numer znaku, przed którym coś rozważamy.
}}
; Sprawdzenie spełnienia warunku, przejście do wnętrza tej instrukcji warunkowej{{dk}}
Funkcja zwracana sprawdza, czy zmienne: {{Code|liczba_koniec_naglowek}} {{LinkPatrz|liczba_koniec_naglowek}}, i {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, istnieją, i te zmienne sugerują punkty znakowe w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, ale jeżeli te zmienne liczbowe punktów znakowych mają takie wartości, że nie da się znaleźć dla tej zmiennej tekstowej treści pomiędzy nimi, to ta funkcja nie zwraca żadnej wartości, to zachodzi, kiedy nie jest spełniony warunek:
<syntaxhighlight lang="lua">
if((liczba_koniec_naglowek)and(liczba_obiekt_start_nowe)and(liczba_koniec_naglowek+1<=liczba_obiekt_start_nowe-1))then
</syntaxhighlight>
; Sprawdzenie uzyskanej zmiennej tekstowej, będąca tekstem pomiędzy linkiem, a końcem rozdziału{{dk}}
* Liczenie zmiennej tekstowej za pomocą, którą będziemy sprawdzać:
: A jeżeli jest jednak tak, tzn. spełniony jest ten warunek, to znajdujemy taki tekst, robi to za pomocą funkcji: {{LzLua|mw.ustring.sub}}, i zapisuje to pod zmienną {{Code|str}} {{Patrz|str}}.
* Pierwszy etap analizowania tej zmiennej, czy jest poprawna, tzn. czy nie zwraca żadnej wartości, ale czy się zakańcza:
: Ona sprawdza, czy ona jest w cudzysłowach, tzn. czy spełnia warunek: {{Code|<nowiki>^%s*'+(.+)'+%s*$</nowiki>}}, lub czy początek zaczyna się od znaków: {{Code|<nowiki>^[%*#:;<>]+</nowiki>}}, lub czy ten tekst zawiera dozwolone znaki z przedziału: {{Code|<nowiki>^[%s%p%w]*$</nowiki>}} - tzn. czy tekst składa się ze znaków odstępu, interpunkcyjnych, znaków alfanumerycznych lub z dolnym myślników, jeżeli któreś z tych warunków jest spełnione, to funkcja nie zwraca żadnej wartości, ale zatrzymuje się, tzn. zakańcza się, to oznacza, że wszystko jest w porządku. A jeżeli nie spełnione z żadnych z tych warunków, to ona idzie dalej, i robi następne czynności następne, aby sprawdzić dalsze warunki, czy wszystko jest w porządku.
; Sprawdzanie niepustych linii{{dk}}
* Sprawdzanie niepustych linii po liniach, ewentualnie składających się ze znaków odstępów:
: Funkcja liczy, ile takich linii znalał, zapisuje to pod zmienną {{Code|ile}} {{Patrz|ile}}, jeśli wśród takich linii znalazł linie pasujące do: {{Code|<nowiki>^[%*#;:<>]</nowiki>}}, lub składające się znaków odstępów: {{Code|<nowiki>^%s*$</nowiki>}}, wtedy funkcja to liczy licznikiem: {{Code|ile_punktowanych}} {{Patrz|ile_punktowanych}}.
Funkcja w tak wyszukanych liniach, w przeciwnym razie sprawdza, w liniach niepasujących do tych wzorów, czy tam są artykuły (strony) nie z rozważanej danej książki, przy pomocy funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, jeśli są takie elementy, to funkcja dodaje to do licznika: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, aby dodać jeden do licznika, dla każdej takiej linii funkcja sprawdza, czy przynajmniej jeden taki artykuł się znajduje tam, w każdej takiej wykrytej linii.
* Jeśli liczba określona przez zmienną: {{Code|ile_punktowanych}} {{LinkPatrz|ile_punktowanych}}, jeżeli jest, co najmniej równa wyszukanym liniom: {{Code|ile}} {{LinkPatrz|ile}}, to funcja się zatrzymuje, i nie zwraca żadnej wartości, czyli wskazuje na powodzenie.
* Gdy liczba tego jest mniejsza niż wykrytych linii, to coś jest nie tak, wtedy funkcja nic nie zwraca, tylko idzie dalej.
; Inne operacje w przypadku niestwierdzenia, jak dotąd niepowodzenia przez funkcję, nie ma jeszcze zwróconej wartości {{nobold|{{Code|nil}}}}{{dk}}
* Zerowanie się pewnych wartości:
** Funkcja z tak policzonego: {{Code|str}} {{LinkPatrz|str}}, usuwa formy kodów z obiektami {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}, a jeżeli znalazł w nim same, wtedy znaki odstępów, to ona nie zwraca żadnej wartości, ale się zakańcza, przeciwnie, sprawdza, czy jest zmienna: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, prawdziwa, a jeśli tak, to elementy zmiennej: {{Code|tab_zmienne}} {{LinkPatrz|tab_zmienne}} są nilowane.
Ale niezależnie od wartości: {{Code|czy_zeruj}} {{LinkPatrz|czy_zeruj}}, funkcja wtedy zwraca zawsze wraca wartość {{Code|true}}, czyli ona zwraca to niepowodzenie.
; Elementy tabeli{{dk}} {{nobold|{{Code|tab_zmienne}}}}, są o kluczach{{dk}}
{{OpisParametrów
| 1 = {{Code|liczba_nie_okladka_artykul}} {{Patrz|liczba_nie_okladka_artykul}} | _1 = Liczba pozycji sekcji wskazująca, czy istnieje pierwszy taki artykuł (nie okładka, nie strona niedozwolona) aktualnej książki, lub bezpośrednio taki artykuł, niekoniecznie tej książki, czy znajduje się bezpośrednio w pozycji sekcji, i tylko sam tam się znajduje.
| 2 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{Patrz|liczba_pierwszy_rozdzialowy_artykul}} | _2 = Liczba pozycji sekcji, która wskazuje na pierwszy taki wykryty artykuł, licząc od przodu, który spełnia pewne ścisle określone kryteria, jaki może być w książce.
| 3 = Kryteria określone przez te zmienne powyżej są określone przez funkcję: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, tzn. pozycje jakich artykułów zaliczyć do tych zmiennych o tych kluczach. | komórka3 = tak
| 4 = {{Code|czy_ten_rozdzial}} {{Patrz|czy_ten_rozdzial}} | _4 = Wartość prawdziwą wskazuje, czy wynilowano zmienne należące do rozważanej tablicy.
}}
== {{Śródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}{{Code|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}} ==
Funkcja wyszukuje, od tyłu, kolejne rozdziały (napisy wprowadzenia tekstu), którego tekst rozdziału składa się z samych znaków odstępów, lub jest pusty, albo o poziomie wyższym rozdziałowo, nawet gdy jego tekst rozdziału jednak nie jest pusty.
Funkcja jest przerywana po najbliższych niespełniających warunkach. Funkcja zwraca parametry, z ostatniego pasującego dopasowana.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_spac_par,czy_dodatni,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji {{ZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka2 = tak
| 3 = {{Code|liczba_start_rozdzial}} {{Patrz|liczba_start_rozdzial}} |_3 = Podczas wyszukiwania od tyłu, do jakiego punktu ma wyszukiwać.
| 4 = {{Code|liczba_obiekt_start_nowe}} | _4 = Jak w: {{LinkPatrz|liczba_obiekt_start_nowe}}, wykorzystywane w funkcji: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, do sprawdzania pomiędzy znakami: końcem wyszukiwanego nagłówka, wraz ze znakiem nowej linii, a tą zmienną, robimy to do sprawdzania, czy tekst rozdziału spełnia ściśle określone normy określone przez tą funkcję. To jest to pozycja taka, na jaką wskazuje również pozycja jakaś artykularna, prze którym sprawdzamy tą funkcją tekst.
| 5 = {{Code|liczba_obiekt_start_spac_par}} {{Patrz|liczba_obiekt_start_spac_par}} | _5 = Numer znaku, od którego ma wyszukiwać od tytułu pewne linie.
| 6 = {{Code|czy_dodatni}} {{Patrz|czy_dodatni}} | _6 = Typ wyszukiwania rozdziałów, tzn. {{LinkZobaczTeż|czy_dodatni}}.
| 7 = {{Code|czy_bez_naglowka}} {{Patrz|czy_bez_naglowka}} | _7 = Czy ma wyszukiwać do: {{Code|1}}, od tytułu, a nie do: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}.
| 8 = {{Code|AnalizowanieSekcjowe}} {{Patrz|AnalizowanieSekcjowe}} | _8 = To nic innego jest, jak funkcja inicjowana przez zwracaną procedurę przez: {{LinkŚródtytuł|p.AnalizowanieSekcjowe}}, która ma w sobie pewne elementy początkowe w sobie wsadzonych jako parametry, które są wykorzystywane prze obiekt przez nią zwracany, która coś robi.
}}
; Typy dopasowywania rozdziałów parametru{{dk}} {{nobold|czy_dodatni {{Code|{{=}}}} {{LinkPatrz|czy_dodatni}} {{ZobaczTeż|czy_dodatni}}}}{{dk}}
* {{Code|1}} - wyszukuje rozdziały wskazywane przez funkcję: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}},
* {{Code|2}} - wyszukuje pozycje list zaczynające się od znaków: {{Code|<nowiki>[%*#:;<>]+</nowiki>}}, jako pewne rozdziały, które trzeba wyszukać,
* Inna wartość niż dwie powyższe - wtedy są wyszukiwane rozdziały niezaczynające się od: {{Code|<nowiki>[^%*#:;<>\n]</nowiki>}}, i kończące się na dwukropek.
: Dla dwóch ostatnich powyższych punktów są wyszukiwane linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}.
: Funkcja dla tych dwóch pierwszych sprawdza, tylko raz, czy to jest rozdział spisu treści wskazywaną przez funkcję: {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, jeżeli parsowanie przeszło niepomyślnie, a funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, zrzuci wartość prawdziwą, wtedy ta cała funkcja z nagłówka zrzuca wartość logiczną fałszywą. Ta funkcja wykorzystuje wartość: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, jako drugi parametr, dla którego liczy ona tekst przed, ta zmienna może wskazywać na początek pozycji linii artykularnej (z artykułami), aby ona policzyła swoją wartość.
Funkcja działa w pętli do zakończenia zasobu danych lub w inny sposób, ale też do zakończenia. Funkcja wtedy robi operacje zawsze dla: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} równe {{Code|1}} lub dla tych, gdzie: {{LinkŚródtytuł|p.CzyTamElementyNieSpisoweArtykularne|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, zwraca wartość logiczną prawdziwą, własnie dla tego, jeśli ta operacja zwróci prawdę, to dla tego są dopasowywane elementy zwracane. Wtedy wiadomo, że wyszukane tak pozycje są rozdziałami.
Funkcja zwraca wyniku w postaci wartości szegu zwracanych:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek_poczt,naglowek,poziom_naglowka,liczba_start_naglowek_dalej,liczba_koniec_naglowek_dalej,naglowek_dalej,poziom_naglowka_dalej;
</syntaxhighlight>
Wytłumaczenie tych elementów zrzuconych przez nią dla dopasowań, licząc od tyłu:
{{OpisParametrów
| 1 = Ostanie dopasowanie nagłówka pasujące, gdy tekst jego rozdziału jest równy znakom odstępu lub jest pusty: | nagłówek1 = tak
| 2 = {{Code|liczba_start_naglowek}} | _2 = Początek ostatniego wyszukanego takiego nagłówka.
| 3 = {{Code|liczba_koniec_naglowek_poczt}} | _3 = koniec pierwszego wyszukanego nagłówka.
| 4 = {{Code|naglowek}} | _4 = Wartość nagłówka dla tego ostatniego dopasowania.
| 5 = {{Code|poziom_naglowka}} | _5 = Poziom takiego nagłówka.
| 6 = Według wartości zwracanych powyższych w pierwszej kolejności, dla którego tekst rozdziału nie musi być równy znakom odstępu, dla rozdziałów coraz bardziej główniejszych, a dla innych tekst rozdziału musi mieć co najwyżej znaki odstępu. | komórka6 = tak
| 7 = Niepasujący nagłówek, wyszukane pierwsze z kolei po pasującym: | nagłówek7 = tak
| 8 = {{Code|liczba_start_naglowek_dalej}} | _8 = Początek po pasującym tak nagłówku.
| 9 = {{Code|liczba_koniec_naglowek_dalej}} | _9 = A tutaj jego koniec.
| 10 = {{Code|naglowek_dalej}} | _10 = Wartość tekstu napisu wprowadzenia tekstu.
| 11 = {{Code|poziom_naglowek_dalej}} | _11 = tutaj jego poziom.
}}
W przypadku nieznalezienia takich nagłówków funkcja nie zwraca niczego.
== {{Śródtytuł|p.SzukanieKolejnychSekcji}}{{Code|p.SzukanieKolejnychSekcji}} ==
Funkcja służy do zaawansowanego szukania, od tyłu, nagłówków w przeciwieństwie do: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, która służy przede wszystkim do szukania sekcji kolejnych jednego rodzaju, a ta funkcja znajduje się w postaci układu sekcji różnego typu w rozważanym tekście.
Funkcja wyszukuje od tyłu, znajduje parametry ostatniego nagłówka i je zwraca, jeżeli je znalazł, a jeśli nie, to nie zwraca żadnej wartości, tylko funkcja się zakańcza.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieKolejnychSekcji(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,liczba_obiekt_start_nowe,liczba_obiekt_start_kolei_par,czy_bez_naglowka,AnalizowanieSekcjowe)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Jedynie funkcja nie ma parametru: {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, ponieważ ta funkcji nie szuka kolejnych rozdziałów tylko jednego rodzaju, lecz wielu. | komórka2 = tak
}}
=== {{Śródtytuł|str_spacja_lub_zerowy_naglowek}}{{Code|str_spacja_lub_zerowy_naglowek}} ===
Dla każdej takiej niepustej linii, sprawdzane jest, czy to są linie z odstępami, lub czy nie są elementami listy, ale w sposób rozszerzony, tzn. ten początek nie może składać się z pewnych znaków, czyli: {{Code|<nowiki>^[^%*#:;<>\n]</nowiki>}}.
Funkcja sprawdza, czy liczba takich linii, jest taka sama, ile jest niepustych linii, wtedy funkcja zwraca wartość logiczną prawdziwą, przeciwnie wartość nilową.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local str_spacja_lub_zerowy_naglowek=function(tekst)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} | _1 = Tekst do sprawdzenia.
}}
=== Etapy dopasowania ostatniego dopasowania rozdziałów, jego pozycja w tekście i jego napis wprowadzenia tekstu - Etap ogólny ===
Funkcja najpierw wyszukuje rozdziały poprzez wskazanie przez funkcję: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, a jeżeli znalazł artykuł, o niepustych secjach pomiędzy ostatnim wskazanym artykułen (przed artykułem), a rozdziałem, wtedy ta funkcja zwraca wartość logiczną fałszywą i zwraca wartość nilową, czyli nic nie zwraca, i funkcja się zakańcza, i wskazuje, że nie znalazł takiego nagłówka, to się dzieje pod warunkiem, że funkcja: {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}, została podana, w przeciwnym wypadku, to już tak się nie dzieje, a nagłówek z tego wywołania mógł być znaleziony, ale nie musi.
=== Etapy alternatywy instrukcji warunkowej ===
W funkcji są trzy etapy instrukcji warunkowej:
* '''if(...)then ({{nobold|pierwszy etap}}) elseif(...) ({{nobold|drugi etap}}) else ({{nobold|trzeci etap}}) end;'''.
==== Pierwszy etap ====
; To dotyczy, że znalazł ostatnie dopasowanie, ale niepasującego nagłówka, przed nim, nie ma.
* Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach.
* A jeżeli tego nie znalazł, wtedy przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, w '''pętli nieskończonej''', najpierw dla parametru: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}, najpierw jest to pierwsze, a później to drugie, jeśli z tego pierwszego zostało wykonana komenda przerwania pętli, to drugie dopasowanie nie zostanie wykonane w danym obiegu jego, normalnie, bez tego są dwa wywołania.
* W każdym takim wywołaniu i dopasowaniu kolejno do tyłu, w pierwszym, czy drugim, będzie sprawdzane, czy tego dokonano, czy taki nagłówek znaleziono, a jeśli tak, to sprawdzany jest tekst pomiędzy ostatnim końcem w wykrytym nagłówku, a początkiem tego przedostatniego, lub z etapu ogólnego, funkcją: {{LinkŚródtytuł|str_spacja_lub_zerowy_naglowek}}, jeżeli funkcja zwróciła wartość logiczną odpowiadającej fałszywej, to pętla jest przerywana, w przeciwnym wypadku są inicjowane parametry tego dopasowania, które przygotowuje ona zwrócić do funkcji w nagłówku.
; Ogólnie po drugim taki wywołaniu następuje sprawdzenie parametrów zwróconych{{dk}}
* Jeżeli w ostatnim takim wywołaniu w tym funkcja zwraca niedopasowanie, wtedy zwracane jest przerywanie pętli, wtedy mamy parametry ostatniego dopasowania, jeśli istnieją takie.
==== Etap drugi ====
; To dotyczy, że takiego dopasowania pasującego nie znalazł.
* Wtedy funkcją: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, znajdowane jest dopasowanie w minimalnie podwójnych cudzysłowach.
* A jeżeli to znalazł, to wyszukany stąd nagłówek jest rozwijany przy pomocy funkcji: {{Code|{{sr|#p.AnalizaNapisuWprowadzeniaTekstu|p=StronicowyParser/SpisTreści/Tom I}}}}.
* Jeżeli parser funkcji nie wykrył wykrzyknika na końcu takiego nagłówka, wtedy jest sprawdzane przy pomocy iteratora w zakodowanym tekście przy pomocy: {{Code|{{m|Szablonowe}}}}, na podstawie: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, czy w nagłówku istnieją artykuły bieżącej książki, i czy to nie jest okładka, czy strona niedozwolona.
* Jeżeli wykryto takie artykuły, lub pętla nie została wykonana, bo nie ma takich wykrytym w nagłówku kodów, to funkcja inicjuje parametry zwracanych wartości przez funkcję w nagłówku.
==== Etap trzeci ====
; To dotyczy pozostałych przypadków, w którym znalazł ostatnie dopasowanie, a niepasujące przed nim też znalazł.
* Jest wywoływane wywołanie: {{LinkŚródtytuł|p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}, najpierw w pierwszym wywołaniu dla: {{Code|czy_dodatni}} {{Code|{{=}}}} {{Code|2}}, a później dla {{Code|3}}.
* A w każdym takim wywołaniu jest sprawdzane, czy tekst pomiędzy końcem ostatniego wykrytego nagłówka, a początkiem przedostatniego nagłówka, a nawet artykułu wykrytego, czyli czy taki tekst rozdziału, czy składa się z samych znaków odstępów, a jeśli tak, to inicjowane są parametry zwracane przez funkcję. Dalej przechodzimy z pierwszego do drugiego wywołania, w którym oba wywołania są podobnie zbudowane.
=== Parametry wychodzące z funkcji ===
* Oto parametry inicjowane przez funkcję w tych powyższych trzech etapach alternatywnych, które na końcu funkcji w nagłówku są zwracane:
Funkcja zwraca wartości określone przez kod:
<syntaxhighlight lang="lua">
return liczba_start_naglowek,liczba_koniec_naglowek,naglowek,poziom_naglowka;
</syntaxhighlight>
=== Wytłumaczenia parametrów zwracanych ===
Parametry określają ostatnie dopasowanie nagłówkowe wewnątrz funkcji:
{{OpisParametrów
| 1 = {{Code|liczba_start_naglowek}} | _1 = Początek tego dopasowania,
| 2 = {{Code|liczba_koniec_naglowek}} | _2 = Jego koniec,
| 3 = {{Code|naglowek}} | _3 = Wartość napisu wprowadzenia tekstu nagłówka,
| 4 = {{Code|poziom_naglowka}} | _4 = Poziom tego nagłówka.
}}
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowych}} ==
Funkcja służy do wyszukiwania, od tyłu, pozycji artykularnej przed wykrytym ostatnim rozdziałem, lub gdy nie ma rozdziałów, to liczy pozycję tylko artykularną, lub nawet pozycji rozdziałów zerowych spisu treści albo nawet tych z dwukropkiem na końcu danej linii, i szuka od tyłu takie coś, by to uznać za początek spisu treści wyciętej z tekstu zakodowanego spisu, czyli ogólnie mówiąc, funkcja szuka dalej takiego początku dalszego.
Funkcja służy też do wydzielania części spisu spełniające powyższe kryteria, aby można było ją parsować przez inne funkcje '''{{ld|StronicowyParser|Stronicowego parsera}}''', do wydzielania dalszych rozdziałów, a z nich wydzielania nagłówków (napisów wprowadzenia tekstu) i tekstów rozdziałów, poprzez zwrócenie w nim wartości pierwszego parametru.
Funkcja pętluje przy wykrytych liniach składających się z odstępów, a się zatrzymuje na normalnych danych lub po zakończeniu zasobów.
Główny opis funkcji {{ZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}:
* Funkcja działa w pętli nieskończonej, aż do zakończenia danych, lub do zwrócenia elementów przez nią,
* W tej pętli funkcja wyszukuje kolejne linie, które nie są pozycjami listy, z którego jest wyodrębiona linia, analizowane, jeżeli istnieją.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_start,czy_dalej_rozdzial,liczba_pierwszy_rozdzialowy_artykul)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}}, i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje parametry: | nagłówek3 = tak
| 4 = {{Code|liczba_start}} {{Patrz|liczba_start}} | _4 = Od której pozycji od tyłu ma wyszukiwać pozycje artykularne.
| 5 = {{Code|czy_dalej_rozdzial}} {{Patrz|czy_dalej_rozdzial}} | _5 = Czy {{ZobaczTeż|czy_dalej_rozdzial}} uznać za pierwszeństwo, w przypadku wykrytego rozdziału dodatniego w linii, lub nie wykrycia takiej linii, która nie jest częścią listy, wtedy jest ważny element (zmienna) {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie jest brane, coś przeciwnego.
| 6 = {{Code|liczba_pierwszy_rozdzialowy_artykul}} | _6 = Jak w: {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}}.
}}
Parametry {{ZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}} zwracane przez funkcję, które są zwracane kolejno w niej na końcu jej działania:
{{OpisParametrów
| 1 = Ustalony taki punkt, uzyskanym z obliczeń w wyniku pętli (wyjaśnienie w tekście). | komórka1 = tak
| 2 = Liczba znaków odstępów wykrytych podczasz wszystkich obiektów pętli (jest to reprezentowane przez: {{Code|liczba_spac}} {{Patrz|liczba_spac}}). | komórka2 = tak
| 3 = Czy tak, uzyskana i zwrócona, linia jest rozdziałem spisu treści (jest to reprezentowane przez: {{Code|czy_spis}} {{Patrz|czy_spis}}). | komórka3 = tak
}}
=== Etapy zwracania przez funkcję elementów ===
* Funkcja przedstawia szereg etapów, jakie ona musi przejść, aby wydzielić nagłówek zerowy przed nim, czy tekst z linkami do artykułów, ale nieokładkowych książki bieżącej.
==== Uzyskanie linii według ogólnego wzoru ====
* Według {{LinkZobaczTeż|p.SzukanieSekcjiLinkowychLiniowych}}, tą linią, byłoby takie coś pomiędzy ewentualnie znakami nowych linii, która spełnia wzór: {{Code|<nowiki>([^%*#:;<>\n][^\n]*)</nowiki>}}. To wyszukiwanie jest według funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wyszukujący w sposób ogólny linie, niezależnie jak są one realizowane w tekście.
==== Początek i koniec uzyskanej linii według powyższego sposobu ====
* Początek i koniec przechwyconej linii, to są pewne liczby, wraz ze znakami nowej linii, jeśli po któreś stronie istnieją, lub nawet gdy to są w tym elementy, początku lub końca, tekstu, wtedy długość tych elementów jest zero.
==== Brak dopasowania linii ====
* A jeżeli dopasowanie tej linii zgłasza niedopasowanie, wtedy przy prawdziwości zmiennej: {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według: {{LinkZobaczTeż|czy_dalej_rozdzial}}, zwracane jest: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przeciwnie, wartość minimalną, pomiędzy tą zmienną a inną {{Code|liczba_pierwszy_rozdzialowy_artykul}} {{LinkPatrz|liczba_pierwszy_rozdzialowy_artykul}} (jeśli ta zmienna nie istnieje, to domyślnie ma wartość {{Code|1}}).
==== Rozdział równaniowy ====
* Jeżeli tą linią jest rozdział równaniowy, to zwracane jest, jeżeli wartość {{Code|czy_dalej_rozdzial}} {{LinkPatrz|czy_dalej_rozdzial}}, według {{LinkZobaczTeż|czy_dalej_rozdzial}}, ma wartość fałszywą, wtedy jest to dopasowanie końca tej linii, w pierwszym parametrze zwracanym, wraz z innymi danymi, według {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}, a jeżeli ta wartość jest prawdą, to zwracane jest {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, bo w tej funkcji nie ma prawa być takich rozdziałów dopasowywać. Ma dopasowywać tylko normalne linie niebędące pozycjami listy lub rozdziałami równaniowymi.
==== Pierwsze rozgałęzenie specjalne instrukcji warunkowej ====
: Znaki odstępów - linia to białe znaki:
* Jeżeli linia istnieje i składa się z samych znaków odstępów, to liczmy długość tych znaków, wraz z nowymi liniami po prawej lub lewej stronie, jeśli istnieją, i wsadzamy to do ogólnego licznika {{Code|liczba_spac}} {{LinkPatrz|liczba_spac}}, która jest zwracana na końcu działania funkcji, jako drugi parametr w: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}. Funkcja wykonuje tych okrążeń pętli tyle, ile jest kolejnych linii składających się z tych znaków.
==== Przypadek istnienia linii nie składającej się ze znaków odstępów ====
: Rozdział spisu treści i rozdział zerowy:
* Jeśli linia jest spisem względem {{LinkŚródtytuł|p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, przyjmuje wartość początkowi takiej ustalonej linii w tekście, a {{Code|czy_spis}} {{LinkPatrz|czy_spis}} przyjmuje wartość prawdziwą.
* A jeśli tak nie jest, to sprawdzamy, czy przed tą linią jest rozdział zerowy na podstawie funkcji: {{LinkŚródtytuł|p.ZnajdowanieZerowegoSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}. Jeżeli ona jest tym rozdziałem, to {{Code|liczba_start}} {{LinkPatrz|liczba_start}} ma już nową wartość, przeciwnie, jeśli ta linia ma na końcu dwukropek, to ta wartość nowa jest równa początkowi wyszukania tej linii, a jeśli nie, to końcowi. Zmienna, czy jest rozdział spisu {{Code|czy_spis}} {{LinkPatrz|czy_spis}} ma wartość prawdziwą, gdy ten rozdział zerowy istnieje, a jeśli nie, to fałszywą.
==== Przypadek istnienia, lub nie, rozdziału zerowego ====
; Gdy znaleziono taki rozdział zerowy{{dk}}
* Jeśli znaleziono taki rozdział (zerowy) - w linii niebieżącej, to: {{Code|liczba_start}} {{LinkPatrz|liczba_start}}, nie zmienia wartości.
* Przeciwnie, jeśli znaleziono taki spis w bieżącej linii, to: {{nobold|{{Code|liczba_start}} {{LinkPatrz|liczba_start}}}}, ma wartość początkowi takiej linii.
; Przeciwnie, wtedy przypadek sprawdzania linii w wypadku nieistnienia w nim kodów{{dk}}
* Jeśli wyszukana linia jest rozdziałem z dwukropkiem na końcu, to początkowi, a jeśli nie, to końcowi.
* Wtedy w przypadku istnienia dwukropka na końcu rozdziału, wtedy ustawiamy: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, jest prawdą, w innym wypadku na fałsz.
; Sytuacja niespełnienia poprzednich warunków{{dk}}
* Sprawdzamy, czy linia ma pozycje artykularne, które nie są okładkami lub stronami niedozwolonymi, a jeśli tak jest, na podstawie wywołania funkcji: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}, to zwracany jest początek wyszukania takiej linii, przeciwnie powtarzana jest wartość {{Code|liczba_start}} {{LinkPatrz|liczba_start}}.
* Wtedy, gdy linia nie ma takich artykułów i rozdział z dwukropkiem na końcu istnieje, wtedy ustalamy zmienną: {{Code|czy_spis}} {{LinkPatrz|czy_spis}}, na prawdę, w innym wypadku na fałsz.
; Zwracane wartości{{dk}}
: Na samym końcu zwracane jest to wszystko w postaci parametrów: {{LinkZobaczTeż|zwracane-p.SzukanieSekcjiLinkowychLiniowych}}.
== {{Śródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}{{Code|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} ==
Funkcja wyszukuje, czy dla obiektu o typie {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} o numerze liczbowym {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} - nie jako łańcuch znakowy, dla ich uzyskiwanego odpowiednika {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, generowanego z: {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}, są linki w zależności od podanej zmiennej: {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, a jeżeli tam nie ma linków, to przeszukiwany jest: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w ich poszukiwaniu, którymi zrządzą prawa w zależności od przyporządkowanej zmiennej: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, wartość prawdziwa tej zmiennej, włącza dowolność układu obiektów typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
Funkcja sprawdza dany link funkcją: {{LinkŚródtytuł|p.CzyGeneralnieElementSpisuRzeczy|StronicowyParser/AnalizaSpisuRzeczy/Tom II}}. A kolejne obiekty w dalszym tekście: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, są znajdowane dzięki iteratorowi: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}.
=== Etapy wykonywania czynności ===
Funkcja patrzy na: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, i sprawdza, czy to jest link:
* Jeśli tak to zwraca wartość pradziwą.
* A jeśli nie, to później robimy to według: {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, w celu wyszukania takiego obiektu, którym jest jakiś pierwszy link.
Wykryty sprawdzany obiekt, względem tego poprzedniego - te obiekty nie muszą być linkami, musi spełniać pewną relację, jeśli wartość {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, nie jest prawdziwa, w przeciwnym razie taka relacja nie jest sprawdzana.
* Jeśli ta zasada jest nie spełniona, to funkcja zwraca wartość fałszywą.
Funkcja zwraca wartość prawdziwą, jeśli wykryto taki pierwszy potwierdzony link, przy spełnionych relacjach, jeśli je trzeba sprawdzić, a jeśli nic nie znalał, to zwraca wartość fałszywą.
=== Inne elementy dokumentacji ===
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieLinkuWeSzablonieOrazDalszymNapisie(obiekt,kod,dalszy_tekst,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,czy_oddzielone,czy_wszystkie_linki)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_start_rozdzial}} {{LinkPatrz|liczba_start_rozdzial}}, {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak
| 4 = {{Code|czy_nieoddzielone}} {{Patrz|czy_nieoddzielone}} | _4 = Czy linki mają być oddzielone interpunkcją, czy odstępami, w przypadu przeciwnym, jeżeli tak nie jest, to funkcja zwraca wartość fałszywą.
| 5 = {{Code|czy_wszystkie_linki}} {{Patrz|czy_wszystkie_linki}} | _5 = Czy uwzględniaj wszystkie linki, czy tylko artykuły, nie okładki, (dozwolone), danej książki.
| 6 = {{Code|dalszy_tekst}} {{Patrz|dalszy_tekst}} | _6 = Dalszy tekst, do przeszukiwania linkowego.
}}
Funkcja zwraca wartość logiczną, według praw linkowych tekstu przyporządkowanych zmiennym: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, to jeśli znalazł taki pierwszy link, to zwraca wartość prawdziwą, a jeśli nie, to fałszywą.
Jeśli zmienna: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}}, przyjmuje wartość fałszywą, to te rozważane obiekty, muszą być oddzielone pewnymi znakami, tutaj: {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, a jak nie spełniają tego warunku, to funkcja zwraca wartość fałszywą, w innym wypadku dalej liczy i sprawdza.
== {{Śródtytuł|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}}{{Code|p.CzyJestZarejestrowanyLinkWeObiektachOddzielonychZnakamiWePozaSekcjowychLiniowychPozycjach}} ==
Funkcja jest rozszerzeniem funkcji: {{LinkŚródtytuł|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} {{Patrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}, dla ustalonych dwóch ostatnich zmiennych, które przyjmują wartość {{Code|true}} (prawdziwą), o nazwach: {{Code|czy_nieoddzielone}} {{LinkPatrz|czy_nieoddzielone}} i {{Code|czy_wszystkie_linki}} {{LinkPatrz|czy_wszystkie_linki}}, dla tej funkcji, mamy już zmienne: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, i {{Code|dalszy_tekst}} {{LinkPatrz|dalszy_tekst}}, a funkcja w nagłówku je ustala, w wyniku działania w pętli.
Funkcja wyszukuje, od tyłu, w tekście, nabliższej pozycji typu: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, w danej linii, i zwraca odpowiednio dwie wartości, pozycje wykrytą i wartość logiczną powodzenia, w innym przypadku, pozycję początkową z drugim parametrem fałszem.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.LinkiNormalneWLubPozaProjektoweSzablonyNieSekcjowychPozycjach(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_spisowa)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Funkcja ma takie same parametry, i to samo znaczą, jak w punkcie: {{LinkZobaczTeż|parametry-p.SzukanieSekcjiOTekstowychPustychElementowychPozycjachLinkowych}}. | komórka1 = tak
| 2 = Funkcja nie przyjmuje parametrów z listy zmiennych podanych w poprzedniej pozycji listy powyżej: {{Code|liczba_obiekt_start_nowe}} {{LinkPatrz|liczba_obiekt_start_nowe}}, {{Code|liczba_obiekt_start_spac_par}} {{LinkPatrz|liczba_obiekt_start_spac_par}}, {{Code|czy_dodatni}} {{LinkPatrz|czy_dodatni}} i {{Code|AnalizowanieSekcjowe}} {{LinkPatrz|AnalizowanieSekcjowe}}. | komórka2 = tak
| 3 = Dodatkowo funkcja przyjmuje dodatkowe wartości jako argumenty: | nagłówek3 = tak
| 4 = {{Code|liczba_start_rozdzial}} | _4 = Jak w: {{LinkPatrz|liczba_start_rozdzial}}, pozycja wyszukiwania końcowa.
| 5 = {{Code|liczba_spisowa}} {{Patrz|liczba_spisowa}} | _5 = pozycja wyszukiwania początkowa.
}}
Funkcja wyszukuje najbliższą linię od tyłu z obiektami typu: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}.
=== Parametry zwracane ===
; Pierwszy parametr{{dk}}
* Pozycja, w którym taką pozycję określoną przez funkcję znaleziono, drugi parametr wtedy przyjmuje prawdę, jeśli nie znaleziono takiej pozycji, to ta pozycja przymuje wartość początkową, a drugi parametr staje się fałszem,
; Drugi parametr{{dk}}
* Czy elementy są odzielone od siebie pewnymi znakami, i czy to są linki artykułów nieokładkowych, czy dozwolonych, i czy obiekty w linii do pierwszego wykrytego linku, czy spełniają relację, wtedy zwraca w drugim parametrze prawdę, w przeciwnym wypadku, nie wykryto takich odpowiednich linków, według wspomnianej funkcji, wtedy zwracony ten parametr będzie fałszem,
* Funkcją dokonuje okrążeń peli aż do wyczerpania zasobów, też odpowiadającej fałszowi, lub do wykrycia tych pewnych danych.
=== Początkowa kolejność wykonywania kodu ===
Funkcja wyszukuje kolejne linie przy pomocy funkcji: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoruElementuLinii|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, wykorzystując, że tekst jest zakodowany, i znajduje one przy pomocy wyrażenia regularnego generowanego przez: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, na podstawie kodu, którego fragment jest napisany tutaj:
<syntaxhighlight lang="lua">
local liczba_spisu=liczba_spisowa;
local szablonowe_modul=require("Module:Szablonowe");
---- Ustalenie wzoru kodowania, czyli jest to dowolny kod;
local szablon_normy_kodowania_szablonu=szablonowe_modul.NormaWzoruKodowaniaTekstu()
while(true)do
---- Wyszukuje dowolną linię według wyrażenia regularnego podanego w kodzie, zawartą całkowicie w linii;
local liczba_linki_nierozdzialowe_szablonu,_,przed_tekst,obiekt_szablon,kod_szablon,dalszy_tekst=p.SzukanieNaPodstawieWzoruElementuLinii(tekst_rozwiniety_calego_artykulu,"[^%S\n]*([^\n]-)[^%S\n]*"..szablon_normy_kodowania_szablonu.."([^\n]*)",liczba_spisu,(not czy_bez_naglowka) and liczba_start_rozdzial or 1,true);
</syntaxhighlight>
=== Sprawdzenie poprzez instrukcję warunkową ===
Fukcja sprawdza, czy dokonano sprawdzenia, jeśli pozytywnie ono przeszło, to musi istnieć zmienna: {{Code|liczba_linki_nierozdzialowe_szablonu}} {{Patrz|liczba_linki_nierozdzialowe_szablonu}}, oraz musi być spełniona alternatywa dwóch warunków: to {{Code|przed_tekst}} {{Patrz|przed_tekst}}, musi być puste lub ma spełniać warunek według wzoru: {{Code|<nowiki>^[%p%s%d%.]*$</nowiki>}}.
=== Kolejne dalsze kroki ===
* Jeżeli funkcja nie dopasowała kodu: {{Code|obiekt_szablon}} {{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, do wartości: {{Code|SZABLON}}, {{Code|LINKW}} i {{Code|LINKZ}}, to działa w pętli aż dopasuje je, aż do zakończenia zasobu danych dostępnych w tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}, jeżeli nie mogła by tego zrobić.
* A jeśli je dopasowała, to sprawdza, czy te kody są odpowiednimi obiektami, ewentualnie oddzielonych od siebie znakami {{Code|<nowiki>[%p%s%d%.]*</nowiki>}}, poprzez sprawdzanie funkcją wspomnianą w nagłówku, czyli: {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}}.
=== Zwracane wartości funkcji ===
Funkcja ma dwa tryby zwracania wartości. Przypadek sukcesu, gdy znaleziono taki link, w innych przypadkach zwracany jest wynik w przypadku niepowidzenia.
==== Przypadek sukcesu ====
Jeśli ta funkcja {{LinkPatrz|p.SzukanieLinkuWeSzablonieOrazDalszymNapisie}} zwróci wartość prawdziwą, to zwrócone zostaną parametry:
<syntaxhighlight lang="lua">
return liczba_linki_nierozdzialowe_szablonu,true;
</syntaxhighlight>
==== Sytuacja niepowodzenia znalezienia takiego linku w linii w tekście ====
W innych przypadkach, jeżeli takiego dopasowania nie znalazła, to zwróci ona szereg wartości:
<syntaxhighlight lang="lua">
return liczba_spisowa,false;
</syntaxhighlight>
W tym przypadku wartość {{Code|liczba_spisowa}} {{LinkPatrz|liczba_spisowa}}, to nic innego jak ostatni argument naszej funkcji, czyli w przypadku niepowodzenia dopasowania, zwracana jest wartość ta początkowa, z drugą wartością, że niezaleziono poszukiwanego obiektu.
== {{Śródtytuł|p.SzukanieSekcjiLinkowychLiniowychZakresowych}}{{Code|p.SzukanieSekcjiLinkowychLiniowychZakresowych}} ==
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.SzukanieSekcjiLinkowychLiniowychZakresowych(tekst_rozwiniety_calego_artykulu,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych,liczba_start_rozdzial,czy_bez_naglowka,liczba_pierwszy_rozdzialowy_artykul,liczba_przed_rozdzialem,liczba_start_naglowek_przed,czy_znajdz)...end;
</syntaxhighlight>
Parametry funkcji:
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
0qo5lknn61picwg5jwii5y7vw7ga31m
Wikibooks:Moduły/StronicowyParser/AnalizaSpisuRzeczy/Tom VI
4
63921
556286
556262
2026-09-14T12:05:56Z
Persino
2851
/* {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} */
556286
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} ==
== {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} ==
Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
}}
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji.
Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu.
Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego.
Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
| 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}},
| 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak
}}
Wartość zwracana:
{{OpisParametrów
| 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak
}}
Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}.
Jak znalazł początki tych nagłówków za pomocą tego pierwszego, jak nie znalazł to według drugiego sposobu, to szuka ich końców, jeżeli znalazł według tego pierwszego, to szuka końca według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł, to zerowe zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy.
To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję.
W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są:
* Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}:
<syntaxhighlight lang="lua">
p.szablony_przypisowe={
["Przypisy"]=true,
["Uwagi"]=true,
["Przypisy-lista"]=true,
};
</syntaxhighlight>
* Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
sh4gmb091v0ajii3qk3nbrinjeftklq
556287
556286
2026-09-14T12:21:18Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
556287
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} ==
== {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} ==
Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
}}
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji.
Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu.
Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego.
Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
| 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}},
| 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak
}}
Wartość zwracana:
{{OpisParametrów
| 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak
}}
Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}.
Jak znalazł początki tych nagłówków, za pomocą tego pierwszego, jak nie znalazł, to według drugiego sposobu, to szuka następnych nagłówków, po końcu wyszukania udanego wcześniejszego, jeżeli znalazł według tego pierwszego, to szuka parametrów według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł to zerowe, zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy.
To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję.
W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są:
* Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}:
<syntaxhighlight lang="lua">
p.szablony_przypisowe={
["Przypisy"]=true,
["Uwagi"]=true,
["Przypisy-lista"]=true,
};
</syntaxhighlight>
* Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
ropr2pk2nlvlfogk95ghoiou30gsyrw
556288
556287
2026-09-14T12:28:24Z
Persino
2851
/* {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} */
556288
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/AnalizaSpisuRzeczy}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.PoliczKoniecZakodowanegoTekstuArtykularnego}}{{Code|p.PoliczKoniecZakodowanegoTekstuArtykularnego}} ==
== {{Śródtytuł|p.KoniecStronyLicencja}}{{Code|p.KoniecStronyLicencja}} ==
Funkcja wyszukuje, od tyłu, szablon licencji: {{s|Licencja}}, i zwraca jego koniec dopasowania, jak i jego kod w postaci zakodowanego tekstu. Funkcja wyszukuje od końca tekstu do pewnego momentu.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KoniecStronyLicencja(tekst_rozwiniety_calego_artykulu,liczba_start,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst_rozwiniety_calego_artykulu}} | _1 = Jak w: {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}}.
| 2 = {{Code|liczba_start}} | _2 = Jak w: {{LinkPatrz|liczba_start|StronicowyParser/AnalizaSpisuRzeczy/Tom V}}, czyli do jakiego momentu ma wyszukiwać.
| 3 = {{Code|tablica_analizy_obiektow_strony_dany_modul}} | _3 = Jak w: {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
| 4 = {{Code|tablica_danych_parametrow_szablonu_strony}} | _4 = Jak w: {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/AnalizaSpisuRzeczy}}.
}}
Funkcja wykorzystuje wzor zdefiniowany przy pomocy funkcji: {{Code|{{sr|#p.NormaWzoruKodowaniaTekstu|p=Szablonowe}}}}, dla obiektu typu: {{Code|SZABLON}}, dla dowolnego numeru, jest to wzor, dzięki któremu wyszukujemy szablon, lub twory szablonowe tym wzorem, których treść: {{Code|szablon}} {{LinkPatrz|szablon|StronicowyParser/AnalizaSpisuRzeczy}}, wyznaczamy z {{Code|obiekt}}, dla tego typu obiektu, i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}} z {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/AnalizaSpisuRzeczy}}.
Wyszukujemy kolejne te twory szablonowe przy pomocy: {{LinkŚródtytuł|p.SzukanieNaPodstawieWzoru|StronicowyParser/AnalizaSpisuRzeczy/Tom I}}, i wybieramy z tego same tylko szablony we specjalnej funkcji, wśród tych znajdujemy ich nazwy przy pomocy niej, jak i inne nieważne parametry, sprawdzając, czy to jest nazwa szablonu licencji.
Funkcja wyszukuje, aż do wyczerpania zasobów tekstu, lub po zatrzymaniu tego na pierwszym wykrytym tak takim szablonie. Funkcja nie potrafi przekroczyć zakresu liczenia, i znajduje tą nazwę, a więc tego szablonu.
Ten kod zakodowany jest tworzony dzięki: {{Code|{{sr|#p.NormaKoduKodowaniaTekstu|p=Szablonowe}}}}, z uzyskanego z pętli dla obiektu: {{Code|obiekt}} {{Code|{{=}}}} {{Code|SZABLON}}{{LinkPatrz|obiekt|StronicowyParser/AnalizaSpisuRzeczy}}, jego numeru: {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/AnalizaSpisuRzeczy}}, co na podstawie tej wspomnianej funkcji uzyskujemy je, jako szablonowy kod bazy zakodowanego tekstu.
Jak funkcja znalazła ten szablon, to zwraca dwie wartości, napisane we wstępie po nagłówku według {{Patrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}:
<syntaxhighlight lang="lua">
return liczba_koniec_szablon,norma_wzoru;
</syntaxhighlight>
Która jest odpowiednikiem sekwencji: {{LinkPatrz|ogólne zwracane parametry-p.KoniecStronyLicencja}}, tylko dla szablonów w specjalnej funkcji wybierającej typy szablonowe tylko szablonów, napisaną w niej w sposób:
<syntaxhighlight lang="lua">
---- Funkcja wśród nazw szablonów, wybiera tylko jedną nazwę: Licencja, i na podstawie tego zwraca dane, lub ta specjalna funkcja nic nie zwraca, ale się zatrzymuje, i dlatego pętla nadrzedna wie, ze ma dalej wyszukiwać kolejne takie twory, a więc i szablony;
if(nazwa_szablonu=="Licencja")then
return liczba_koniec_szablon,szablonowe_modul.NormaKoduKodowaniaTekstu(obiekt,kod);
end;
</syntaxhighlight>
== {{Śródtytuł|p.KorygowanieTekstuSpisuRzeczy}}{{Code|p.KorygowanieTekstuSpisuRzeczy}} ==
Funkcja do korygowania tekstu {{Code|tekst}} {{LinkPatrz|tekst}} spisu treści z wydzielonego z: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}}, poza tą funkcją, za pomocą jego początku i końca wydzielenia z tego.
Ten tekst, jest korygowany przez tą funkcję, z elementami bibliografii (a te pierwsze tylko linki z bieżącej książki są zostawiane, a dalsze są też zostawiane) i literatury (a tutaj tak samo jak z pierwszymi, z artykułami bieżącej książki, a dalsze są usuwane). W przypadku bibliografii, tylko szablony licencji i przypisów, czyli te elementy {{ZobaczTeż|specjalne szablony}} są zostawiane, a dalsze są usuwane, w przypadku literatury szablony wszystkie są usuwane. Pozostałe części, które z tych elementów zostają przez tą funkcję usunięte, czyli zastąpione zostają ciągiem pustym, czyli są usunięte inaczej mówiąc.
Elementy bibliografii i literatury mieszczą się w pewnych zdefiniowanym osobnych rozdziałach, które mieszczą się w spisie książki, i są to pewne napisy wprowadzenia tekstu z tymi osobnymi tymi, czego dotyczą, co usuwamy, co zostawiamy, w ich, w ich napisach wprowadzenia tekstu, wraz ich zawartościami, a te teksty, to właśnie modyfikujemy.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
function p.KorygowanieTekstuSpisuRzeczy(tekst,tab_wzor,nazwa_przestrzeni,nazwa_przestrzeni_ksiazki,nazwa_ksiazki,nazwa_spisu_tresci,pelna_nazwa_spisu_tresci_szablonowa,tablica_analizy_obiektow_strony_dany_modul,tablica_danych_parametrow_szablonu_strony,tab_nazwa_spisow_przekierowaniowych)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|tekst}} {{Patrz|tekst}} | _1 = część wydzielonego tekstu z całości: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/AnalizaSpisuRzeczy}},
| 2 = {{Code|tab_wzor}} {{Patrz|tab_wzor}} | _2 = Tablica dwuwyniarowa, składająca się ze wzoru rozdziału i drugiej wartości logicznej: {{Code|true/false}}, czy ma dalsze linki i szablony (tutaj szablony: {{LinkZobaczTeż|specjalne szablony}}) zostawiać, a które już nie, w wydzielonym tekście: {{Code|tekst}} {{LinkPatrz|tekst}},
| 3 = Parametry z sekcji: {{LinkZobaczTeż|Parametry zakodowanego spisu|StronicowyParser/AnalizaSpisuRzeczy}}. | komórka3 = tak
}}
Wartość zwracana:
{{OpisParametrów
| 1 = Jest to zmodyfikowana wartość tekstu: {{Code|tekst}} {{LinkPatrz|tekst}}, wydzielonego poza tą funkcją z tekstu artykułu zakodowanego, z elementami biliografii lub literatury, w którym usuwaliśmy pewne elementy. | komórka1 = tak
}}
Ten wzor do wydzielania tekstu z drugą wartością logiczną, jest w tablicy, dla: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe|p=StronicowyParser/obiekty}}}}, a przytaczamy tutaj jego definicję {{Patrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe}}:
<syntaxhighlight lang="lua">
p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_dodatkowe={
[1]={"[ _\t]*'*[ _\t]*[Ll][Ii][Tt][Ee][Rr][Aa][Tt][Uu][Rr][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",false,},
[2]={"[ _\t]*'*[ _\t]*[Bb][Ii][Bb][Ll][Ii][Oo][Gg][Rr][Aa][Ff][Ii][Aa][ _\t]*'*[ _\t]*:?[ _\t]*'*[ _\t]*",true,},
};
</syntaxhighlight>
Poszczególne elementy tej tablicy, tzn. elementy numerowane, są to pojedyncze tablice o nazwie: {{Code|tab_wzor}} {{LinkPatrz|tab_wzor}}, wsadzane jako drugi parametr naszej funkcji.
Przed korygowaniem tekstu spisu treści, szablon korzysta z funkcji do znajdowania odpowiedniego nagłówka dodatniego, niezależnie jakiego, od pierwszej pozycji tego wydzielonego tekstu, zdefiniowanego w: {{LinkŚródtytuł|p.WprowadzenieTekstuCentrowaneZnacznikowoSzablonowoLubDodatnie|StronicowyParser/AnalizaSpisuRzeczy/Tom IV}} {{Patrz|nagłówek_dodatni}}, a jeżeli tam jego nie znalazł, to je szuka w zerowych rozdziałach według: {{LinkŚródtytuł|p.ZnajdowanieZerowegoNapisuWprowadzeniaTekstu|StronicowyParser/AnalizaSpisuRzeczy/Tom III}} {{Patrz|nagłówek_zerowy}}.
Jak znalazł dane tych nagłówków, za pomocą tego pierwszego, jak nie znalazł, to według drugiego sposobu, to szuka następnych nagłówków, po końcu wyszukania udanego wcześniejszego, jeżeli znalazł według tego pierwszego, to szuka parametrów według nagłówka podobnego, czyli też dodatniego, ale dowolnego, a jak znalazł to zerowe, zamiast dodatniego, to szuka nagłówka końcowego na dwa możliwe sposoby, sposób pierwszy: {{LinkPatrz|nagłówek_dodatni}} - nagłówek dodatni, i {{LinkPatrz|nagłówek_zerowy}} - nagłówek zerowy, i znajduje ten wcześniejszy, i na podstawie tego mamy treści, z którego możemy wydzielić tekst przed tym napisem wprowadzenia tekstu i po, jak i to pomiędzy.
To pomiędzy, czyli tekst, który dotyczy rozdziału: '''Bibliografia''' lub '''Literatura''', modyfikujemy ich tekst rozdziału, a na samym końcu po korekcji łączymy te trzy tekstu w jeden wielki tekst i zwracamy przez tą funkcję.
W nagłówku '''Bibliografia''' funkcja uwzględnia szablony: przypisów jak: {{s|Przypisy}}, licencji jak: {{s|Licencja}}, definicje tych tabel są:
* Szablonów przypisów, która uwzględnia wiele rodzajów przypisów różnego rodzaju, jak przypisy bibliograficzne (szablon: {{s|Przypisy}} i {{s|Przypisy-lista}}) i rzeczowe (szablon: {{s|Uwagi}}), są one zdefiniowane przy pomocy modułu {{m|Przypisy}}:
<syntaxhighlight lang="lua">
p.szablony_przypisowe={
["Przypisy"]=true,
["Uwagi"]=true,
["Przypisy-lista"]=true,
};
</syntaxhighlight>
* Szablonów licencji, która uwzględnia na razie tylko jeden rodzajów licencji, są one zdefiniowane przy pomocy modułu {{m|Licencja}}:
<syntaxhighlight lang="lua">
p.szablony_licencji={
["Licencja"]=true,
};
</syntaxhighlight>
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
os9me4s4hybsx9a71zukq8kzcuxjyhi
Wikibooks:Moduły/StronicowyParser/Rozdziały/Tom V/Część II
4
64128
556333
554383
2026-09-14T14:58:27Z
Persino
2851
/* {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} */
556333
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ===
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej.
=== Kod wspólny ===
==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}}
* Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem.
* A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona.
===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} =====
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów:
* {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
* Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
* Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}.
* W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} =====
Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna.
Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich.
Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======
Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
====== Dalszy opis funkcji ======
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} =====
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}},
* {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}.
====== {{Śródtytuł|Spis}}{{Code|Spis}} ======
Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
; Konstrukcja funkcji{{dk}}
* Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści.
* Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
====== Dalszy opis funkcji ======
; Jeśli znaleziono dopasowanie{{dk}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
; Gdy jednak nie było takiego przypadku{{dk}}
W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
; Inny wypadek{{dk}}
W innym wypadku nie jest zwracana żadna wartość.
===== Kod dalszy funkcji =====
====== Warunki wstępne ======
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
* Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
* Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału, '''dodatniego równaniowego''', czy '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii.
====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ======
; Iterator dla danej linii{{dk}}
* Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
* Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}:
** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}}
* W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku.
** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki,
* A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie.
; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}}
* A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}},
* A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}.
* A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}}
* Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}.
===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} =====
====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ======
; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}}
* Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii.
** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}},
** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}.
* A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}},
** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie.
====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ======
; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}}
* Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}},
** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}},
** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej,
** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ======
* Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej,
** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana,
** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana,
* W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału =====
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} =====
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa:
* wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym.
* Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono.
=== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ===
Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}}
* Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
; Rozdział dodatni równaniowy{{dk}}
* Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}.
* Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami.
* W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość).
; Pierwsza anonimowa funkcja{{dk}}
* Rozdziały w tym nagłówki spisu treści lub rzeczy
** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}.
** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}.
** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}.
** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
* Dalsze obliczenia spisowe
** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
; Druga anonimowa funkcja{{dk}}
* Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}}
* Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
=== Wartości zwracane przez iterator ===
Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
; Gdzie parametry wartości zwracanych{{dk}}
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
s5g1vb09hjhjlohegjise58w1ofprpi
556334
556333
2026-09-14T15:18:19Z
Persino
2851
/* Kod dalszy funkcji */
556334
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ===
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej.
=== Kod wspólny ===
==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}}
* Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem.
* A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona.
===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} =====
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów:
* {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
* Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
* Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}.
* W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} =====
Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna.
Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich.
Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======
Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
====== Dalszy opis funkcji ======
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} =====
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}},
* {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}.
====== {{Śródtytuł|Spis}}{{Code|Spis}} ======
Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
; Konstrukcja funkcji{{dk}}
* Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści.
* Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
====== Dalszy opis funkcji ======
; Jeśli znaleziono dopasowanie{{dk}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
; Gdy jednak nie było takiego przypadku{{dk}}
W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
; Inny wypadek{{dk}}
W innym wypadku nie jest zwracana żadna wartość.
===== Kod dalszy funkcji =====
====== Warunki wstępne ======
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
* Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
* Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii.
====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ======
; Iterator dla danej linii{{dk}}
* Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
* Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}:
** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}}
* W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku.
** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki,
* A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie.
; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}}
* A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}},
* A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, a potem z tym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}.
* A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}}
* Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}.
===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} =====
====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ======
; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}}
* Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii.
** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}},
** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}.
* A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}},
** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie.
====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ======
; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}}
* Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}},
** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}},
** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej,
** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ======
* Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej,
** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana,
** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana,
* W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału =====
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} =====
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa:
* wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym.
* Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono.
=== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ===
Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}}
* Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
; Rozdział dodatni równaniowy{{dk}}
* Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}.
* Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami.
* W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość).
; Pierwsza anonimowa funkcja{{dk}}
* Rozdziały w tym nagłówki spisu treści lub rzeczy
** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}.
** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}.
** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}.
** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
* Dalsze obliczenia spisowe
** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
; Druga anonimowa funkcja{{dk}}
* Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}}
* Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
=== Wartości zwracane przez iterator ===
Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
; Gdzie parametry wartości zwracanych{{dk}}
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
o67a02u5u7sxhr7ppkgppasjflqa53v
556335
556334
2026-09-14T15:25:20Z
Persino
2851
/* Iterator po rozważanej zmiennej, czyli iteracja po tekście */
556335
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ===
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej.
=== Kod wspólny ===
==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}}
* Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem.
* A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona.
===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} =====
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów:
* {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
* Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
* Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}.
* W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} =====
Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna.
Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich.
Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======
Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
====== Dalszy opis funkcji ======
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} =====
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}},
* {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}.
====== {{Śródtytuł|Spis}}{{Code|Spis}} ======
Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
; Konstrukcja funkcji{{dk}}
* Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści.
* Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
====== Dalszy opis funkcji ======
; Jeśli znaleziono dopasowanie{{dk}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
; Gdy jednak nie było takiego przypadku{{dk}}
W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
; Inny wypadek{{dk}}
W innym wypadku nie jest zwracana żadna wartość.
===== Kod dalszy funkcji =====
====== Warunki wstępne ======
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
* Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
* Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii.
====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ======
; Iterator dla danej linii{{dk}}
* Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
* Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}:
** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}}
* W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku.
** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki,
* A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie.
; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}}
* A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}},
* A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}.
* A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}}
* Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy już nie, tak jak dla obiektu {{Code|SZABLON}}.
===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} =====
====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ======
; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}}
* Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii.
** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}},
** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}.
* A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}},
** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie.
====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ======
; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}}
* Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}},
** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}},
** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej,
** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ======
* Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej,
** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana,
** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana,
* W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału =====
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} =====
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa:
* wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym.
* Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono.
=== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ===
Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}}
* Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
; Rozdział dodatni równaniowy{{dk}}
* Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}.
* Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami.
* W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość).
; Pierwsza anonimowa funkcja{{dk}}
* Rozdziały w tym nagłówki spisu treści lub rzeczy
** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}.
** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}.
** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}.
** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
* Dalsze obliczenia spisowe
** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
; Druga anonimowa funkcja{{dk}}
* Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}}
* Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
=== Wartości zwracane przez iterator ===
Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
; Gdzie parametry wartości zwracanych{{dk}}
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
jfo57xo3yt02vgb36g6tv203iffvfz1
556336
556335
2026-09-14T15:27:09Z
Persino
2851
/* Iterator po rozważanej zmiennej, czyli iteracja po tekście */
556336
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ===
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej.
=== Kod wspólny ===
==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} - funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}}
* Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem.
* A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona.
===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} =====
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów:
* {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
* Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
* Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}.
* W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} =====
Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna.
Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} - zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich.
Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======
Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
====== Dalszy opis funkcji ======
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} =====
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
* {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} - zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}},
* {{Code|hn_number}} {{Patrz|hn_number}} - to jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo.
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}.
====== {{Śródtytuł|Spis}}{{Code|Spis}} ======
Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
* Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.
; Konstrukcja funkcji{{dk}}
* Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści.
* Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
====== Dalszy opis funkcji ======
; Jeśli znaleziono dopasowanie{{dk}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
; Gdy jednak nie było takiego przypadku{{dk}}
W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
; Inny wypadek{{dk}}
W innym wypadku nie jest zwracana żadna wartość.
===== Kod dalszy funkcji =====
====== Warunki wstępne ======
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
* Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
* Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii.
====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ======
; Iterator dla danej linii{{dk}}
* Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
* Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}:
** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}}
* W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku.
** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki,
* A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie.
; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}}
* A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}},
* A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}.
* A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}}
* Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy nie są te obiekty, to podobnie liczymy dla obiektu {{Code|SZABLON}}.
===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} =====
====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ======
; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}}
* Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii.
** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}},
** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}.
* A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}},
** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie.
====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ======
; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}}
* Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}},
** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}},
** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej,
** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ======
* Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej,
** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana,
** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana,
* W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału =====
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} =====
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa:
* wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym.
* Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono.
=== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ===
Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}}
* Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
; Rozdział dodatni równaniowy{{dk}}
* Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}.
* Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami.
* W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość).
; Pierwsza anonimowa funkcja{{dk}}
* Rozdziały w tym nagłówki spisu treści lub rzeczy
** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}.
** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}.
** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}.
** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
* Dalsze obliczenia spisowe
** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
; Druga anonimowa funkcja{{dk}}
* Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}}
* Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
=== Wartości zwracane przez iterator ===
Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
; Gdzie parametry wartości zwracanych{{dk}}
* {{Code|naglowek}} - jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|linia}} - jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
* {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie,
* {{Code|poczatek_rozdzialu}} - jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|numeracja_rozdzialu}} - jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|czy_rozdzial_centrowany}} - jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
7bhadon5u6a0rzlv0ewkv0zhut4b4ah
556359
556336
2026-09-14T19:05:35Z
Persino
2851
556359
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/Rozdziały}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.IterTekst}}{{Code|p.IterTekst}} ==
Jest to dokończenie dokumentacji (opisu) funkcji bibliotecznej: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, ze strony projektu: {{Code|{{lr2|Moduły/StronicowyParser/Rozdziały/Tom V/Część I}}}}, języka {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.
=== Kod dalszy, bez wybrania dalej sekcji: {{Code|czy_dalej_rozwazac_zakodowane}} (dla każdego rodzaju treści, tzn. zakodowanych i niezakodowanych) ===
Liczymy iterator {{Code|iter_main}} {{Patrz|iter_main}} z generatora: {{Code|{{sr|#p.IteratorLiniiTekstu|p=Szeregi}}}}, na możliwym zmodyfikowanym tekście {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}.
Dla tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, a właściwie dla ich kopii, jest przyłączana metatabela typu {{Code|{{sr|#p.metatablica_dla_elementowych_miar_tablicy_wedle_niewielkich_liter|p=Parametry}}}}.
Zmienna: {{Code|czy_w_spisie_tresci}} {{Patrz|czy_w_spisie_tresci}}, jest inicjowana wartością {{Code|true/nil}} na podstawie {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, zatem:
<syntaxhighlight lang="lua">
local czy_w_spisie_tresci=((not czy_inne_rozdzialy_analizowac)and true or nil);
</syntaxhighlight>
A także jest uruchamiany sam parser nowych linii {{Code|parser}} {{Patrz|parser}}, który analizuje linie bez linii z rozdziałami dodatnimi równaniowych, którego funkcją inicjującą jest: {{Code|{{sr|#p.ParserPodawaniaNapisuWprowadzeniaTekstu|b=tak}}}}.
Dalej są definicje funkcji dalsze, a jeszcze dalej jest uruchamiana funkcja iteratora funkcji: {{LinkŚródtytuł|p.IterTekst|StronicowyParser/Rozdziały/Tom V/Część I}}, czyli jej funkcji zwracanej.
=== Kod wspólny ===
==== {{Śródtytuł|Wystepowanie}}{{Code|Wystepowanie}} ====
W niej są zdefiniowane funkcje, których opisy ich definicji są podane poniżej. Ona też posiada dalszy kod, których opis jest pod nimi.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Wystepowanie(linia,funkcja1,funkcja2)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|linia}} | _1 = Jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}},
| 2 = {{Code|funkcja1}} {{Patrz|funkcja1}} i {{Code|funkcja2}} {{Patrz|funkcja2}} | _2 = funkcja pierwsza, gdy: {{Code|tak}} {{Patrz|tak}}, jest prawdą, a druga fałszem.
}}
; Pierwszy gdy znaleziono artykuł bez swojego nagłówka (rozdział nilowy) lub z nim (rozdział nienilowy){{dk}}
* Funkcja: {{Code|funkcja1}} {{LinkPatrz|funkcja1}}, jest wtedy wykonywana, gdy znaleziono właściwy pierwszy artykuł w właściwym spisie treści, i wtedy mamy ustawiony nagłówek '''nilowy''', czyli, dla artykułów pierwszych w spisie, które nie mają swojego nagłówka. W innym wypadku gdy znaleziono taki pierwszy artykuł ze swoim nagłówkiem.
* A funkcja: {{Code|funkcja2}} {{LinkPatrz|funkcja2}} - gdy takiej linii nieznaleziono.
Wartość: {{Code|czy_znaleziono_okladka}} {{Patrz|czy_znaleziono_okladka}}, przyjmuje wartość {{Code|false}}, na samym początku definicji tej funkcji, co symbolizuje ustawioną na samym początku na brak okładek w spisie. Później funkcja według: {{LinkŚródtytuł|RozwazajLinie}}, ustawia, czy w tej jest rzeczywiście ona.
===== {{Śródtytuł|RozwazajLinie}}{{Code|RozwazajLinie}} =====
Funkcja sprawdza zmienne: {{Code|szablon}}, {{Code|obiekt}} i {{Code|kod}}, funkcją: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/Potrzebne}}}}, która służy do analizy linków wewnętrznych {{Code|LINW}} i zewnętrznych {{Code|LINKZ}}, a także szablonowych linków inteligetnych, którego elementami są artykuły książki, ale niekoniecznie, ale zawsze bądź razem jest to jakaś strona wewnętrzna, czy zewnętrzna, ale wewnątrz projektu, wykorzystując przy okazji, jednocześnie, funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}.
Funkcja przede wszystkim służy do analizy, typu {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, obiektów:
* {{Code|SZABLON}} - szablonów niebędących szablonami centrowania: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, lub je niemające zawartości, według tablicy: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
* {{Code|ZNACZNIK}} - znaczników niebędących znacznikami centrowania: {{Tag|center}} i znacznikami nagłówków: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, w tym przypadku to stosujemy poprzez szablon: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
* Dla innych typów niż te oba powyższe, czasami tymi innymi są to dotyczące również: {{Code|LINKW}} - linki wewnętrzne, i {{Code|LINKZ}} - linki zewnętrzne.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinie(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}.| komórka1 = tak
}}
* Funkcja sprawdza, czy napotkany artykuł niepusty, inny niż artykuł książki, lub jej artykuł, ale nie okładka (artykuł dozwolony), wtedy funkcja zwraca z wartością {{Code|1}}.
* W innym rozgałezieniu tej instrukcji, ona rewiduje, czy parametr szablonowy wskazuje na link okładkę (artykuł niedozwolony), jeżeli tak, to ustawia zmienną na wartość prawdziwą, zmienną odpowiedzialną za linki okładek, czyli {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}.
Dla istniejącego parametru {{Code|kom}} ona zwraca wynik {{Code|0}}.
===== {{Śródtytuł|RozwazajLinieZnacznikowe}}{{Code|RozwazajLinieZnacznikowe}} =====
Funkcja rozważa ogólnie linie, czy w nim są obiety z: {{Code|SZABLON}}, {{Code|LINKW}} lub {{Code|LINKZ}}, czy nie są obiektami linków okładek, czy zwykłymi artykułami, a może nie ma tam żadnego linku, nawet inteligentnego, a w przypadku, gdy taką jednak złapał, to ustawiana jest pewna zmienna.
Funkcja słuzy przede wszystkim do analizy znaczników, {{Code|ZNACZNIK}}, innych niż: centrowania: {{Tag|center}}, i nagłówków: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function RozwazajLinieZnacznikowe(zawartosc)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}} | _1 = Zawartość obiektu kodu bazy danych kodowania zakodowanego wikikodu.
}}
Funkcja uruchamia funkcję iteratora bazy danych kodowania wikikodu, funkcja pomija elementy artykułów, czy okładek, zatrzymując się właśne na nich.
Iterator iteruje po zawartości zawartości elementu {{Code|zawartosc}} {{LinkPatrz|zawartosc|StronicowyParser/Rozdziały/Tom II}}, aż do zakończenia danych, lub na podstawie decyzji przerwania analizy przez funkcję wewnątrz, aby analizować do pierwszego wspomnianego elementu.
====== {{Śródtytuł|CenterZnacznikLinia}}{{Code|CenterZnacznikLinia}} ======
Funkcja właściwa do rozważania szczególnego z obiektami. Funkcja jest używana przez funkcję: {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function CenterZnacznikLinia(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. | komórka1 = tak
}}
Funkcja uruchamia funkcję {{LinkŚródtytuł|RozwazajLinie}}, jeżeli ona zwraca wartość: {{Code|nil}} - artykuł okładka, lub {{Code|1}} - właściwy artykuł nieokładkowy, wtedy funkcja się zakańcza z wartością nilową, przeciwnie funkcja zrzuca: {{Code|szablon}} (pierwsza wartość zwracana), {{Code|tekst}} (druga).
====== Dalszy opis funkcji ======
Funkcja sprawdza dla obiektów szablonowych: {{Code|SZABLON}}, oraz obiektów linkowych: {{Code|LINKW}} i {{Code|LINKZ}} funkcją {{LinkŚródtytuł|CenterZnacznikLinia}}, wtedy za każdym razem ta funkcja zwraca wynik: {{Code|return szablon,tekst}}, która jest zrzucana do funkcji pierwszej iteratora, która zatrzymuje pętle kiedy chce, jeżeli ta funkcja zrzuciła wynik nilowy.
W innych przypadkach niż te obiekty wyżej opisane funkcja nie zwraca żadnego wyniku, co odpowiada wartości: {{Code|nil}}, wtedy pętla iteratora jest przerywana.
===== {{Śródtytuł|spis_tresci}}{{Code|spis_tresci}} =====
Jest to funkcja ogólna do rozwazania szablonów centrowania spisów treści: {{s|Ce}}, {{s|Centruj}} i {{s|Center}}, według: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}}, też do rozważania nagłówków centrowanych szablonowo, czy znacznikowo: {{Tag|center}}, a nawet gdy zamiast tego mamy znacznik nagłówka: {{Tag|h1}}, {{Tag|h2}}, {{Tag|h3}}, {{Tag|h4}}, {{Tag|h5}} i {{tag|h6}}, według: {{Code|{{sr|#p.znaczniki_wprowadzenia_tekstu|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function spis_tresci(wystepowanie_linkow,hn_number)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = {{Code|wystepowanie_linkow}} {{Patrz|wystepowanie_linkow}} | _1 = Zawartość szablonu spisu treści z linkami wewnętrznymi, a nawet inteligentnymi, czyli obiekty {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, czy nawet {{Code|LINKW}}, a nawet opcjonalnie linki zewnętrzne, typu {{Code|LINKZ}},
| 2 = {{Code|hn_number}} {{Patrz|hn_number}} | _2 = To jest poziom rozdziału dodatniego, ze spisem, ale centrowania - którym jest {{Code|2}}, czy nawet znaczników nagłówka {{Tag|h<liczba>}}, ale w tym linku musi się znajdować artykuł, którego nazwą jego linku jest artykuł o nazwie, dedykowanej przez tabelę opisaną w funkcji: {{LinkŚródtytuł|Spis}}, w nagłówku. Tym numerek również może być poziom dla zwykłych rozdziałów, ale nie dodatnich równaniowo.
}}
Uruchamiana jest funkcja iteratora: {{Code|{{sr|#p.IteratorSzablonowyZakodowanegoTekstu|p=Szablonowe}}}}, którą iterujemy po całym zestawie dostępnych danych, którą w każdym momencie może być przerwana przez zwracanie wartości do funkcji. Funkcja służy do sprawdzenia, według funkcji: {{LinkŚródtytuł|Spis}}, i tam są ustawiane pewne zmienne, tzn. {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{Patrz|szablon_spis_tresci}}.
====== {{Śródtytuł|Spis}}{{Code|Spis}} ======
Jest to funkcja szczególna do rozwazania szablonów centrowania, z artykułami danej książki, spisów treści z nagłówkami określonymi przez tabelę: {{Code|{{sr|#p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu_spis_tresci|p=StronicowyParser/obiekty}}}}.
Definicja skrótowa funkcji:
<syntaxhighlight lang="lua">
local function Spis(szablon,obiekt,kod)...end;
</syntaxhighlight>
Parametry funkcji:
{{OpisParametrów
| 1 = Jak w: {{LinkZobaczTeż|szablon-obiekt-kod|StronicowyParser/Rozdziały/Tom V/Część I}}. | komórka1 = tak
}}
; Konstrukcja funkcji{{dk}}
* Funkcja uruchamia funkcję: {{Code|{{sr|#p.AnalizujLinkSzablonyOrazLinki|p=StronicowyParser/obiekty}}}}, wykorzystując przy okazji funkcję: {{LinkŚródtytuł|p.__FUNKCJA_KOMPLETOWANIA|StronicowyParser/Rozdziały/Tom III}}, jeżeli wartość któraś zwracana jest {{Code|kom}}, ona ma wynik odpowiadający wartości fałszywej, czyli to nie jest artykuł, a tym bardziej link spisu treści.
* Ale dla istniejącego spisu dla pierwszego linku wartości sprawdzanej dla artykułu danej książki, funkcja sprawdza według elementu: {{Code|{{sr|#p.ParsowanieNapisuWprowadzeniaTekstuSpisuStron|p=StronicowyParser/AnalizaSpisuRzeczy}}}}, czy to jest artykuł spisu treści, czy spisu rzeczy, wtedy są inicjowane zmienne: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami (kolejno: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} i {{Code|hn_number}}), i jest zwracana wartość {{Code|1}}, w przypadku, gdy napotkano szablony, czy znaczniki, ale centrowania.
Dla innej wartości {{Code|kom}} zwracana jest wartość {{Code|0}}.
W pozostałych wypadkach funkcja nie zwraca żadnego wyniku.
====== Dalszy opis funkcji ======
; Jeśli znaleziono dopasowanie{{dk}}
Funkcja dla obiektu: {{Code|SZABLON}}, oraz {{Code|LINKW}} i {{Code|LINKZ}}, uruchamia, w pętli, funkcję {{LinkŚródtytuł|Spis}}, której jeżeli wynik istnieje, to jest zwracany.
; Gdy jednak nie było takiego przypadku{{dk}}
W wypadku wypadku parametr {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}} jest kompletowany, jeśli istnieje, i trimowany jest funkcją: {{LzLua|mw.text.trim}}, co dalej jest sprawdzana kopią tabeli: {{LinkPatrz|p.tablica_nazw_wprowadzenia_tekstu_generalnego_spisu_rzeczy_woluminu|StronicowyParser/Rozdziały/Tom V/Część I}}, połączonej z metatabelką, ta tabela opisuje mniej więcej rozdziały spisu rzeczy, czy treści, a jeżeli to napotkano, wtedy inicjowane dla niej są zmienne: {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}} i {{LinkPatrz|szablon_spis_tresci}}, odpowiednimi wartościami, tzn. kolejno: {{Code|hn_number}} {{LinkPatrz|hn_number}} i {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, ze zmiennych parametrów w definiowanej funkcji, w tym przypadku jest zwracana wartość {{Code|1}}.
; Inny wypadek{{dk}}
W innym wypadku nie jest zwracana żadna wartość.
===== Kod dalszy funkcji =====
====== Warunki wstępne ======
Liczymy zmienną: {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, przechwytując wartość z: {{Code|<nowiki>^[#:%*;%d%.>]+%s*(.+)$</nowiki>}}, jeśli istnieje, lub z: {{Code|<nowiki>^(%S+%s*.+)$</nowiki>}}.
* Gdy mamy włączoną opcję: {{Code|czy_dalej_rozwazac_zakodowane}} {{LinkPatrz|czy_dalej_rozwazac_zakodowane|StronicowyParser/Rozdziały/Tom V/Część I}}, co mówi o kodowanym wikitekście, czyli dla tekstu {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/Rozdziały/Tom V/Część I}}, wtedy możemy powiedzieć, ze również {{Code|wystepowanie_linkow}} {{LinkPatrz|wystepowanie_linkow}}, w tej funkcji jest zakodowane.
* Gdy tak otrzymana zmienna istnieje, wtedy można powiedzieć, że będziemy za pomocą wcześniejszych funkcji znajdowali początkowe artykuły, który nie są przydzielone do żadnego rozdziału albo '''dodatniego równaniowego''', bądź opcjonalnie do '''ujemnego''', na początku otrzymanego spisu treści dla jego początkowych linii.
====== Iterator po rozważanej zmiennej, czyli iteracja po tekście ======
; Iterator dla danej linii{{dk}}
* Uruchamiamy iterator po naszej wartości rozważanej zmiennej, z pierwszą jedyną funkcją, która przerywa iterację, gdy zwróci wartość {{Code|nil}}, jest wtedy uruchamiana procedura, która może się przerwać, kiedy chce, lub po zakończeniu zasobów danych.
* Funkcja, użyta w definicji iteratora, wchodzi do jej ciała właściwego, gdy: {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, jest równe {{ZobaczTeż|obiekt}}:
** osiągnieto obiekty, {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}}, typu: {{Code|SZABLON}}, {{Code|ZNACZNIK}}, {{Code|LINKW}} i {{Code|LINKZ}}.
; Obiekt szablonowy, czyli typu{{dk}} {{nobold|{{Code|SZABLON}}}}{{dk}}
* W tej funkcji, gdy obiekt to {{Code|SZABLON}}, sprawdzamy, czy on jest szablonem napisu wprowadzenia tekstu o nazwie z: {{Code|{{sr|#p.szablony_wprowadzenia_napisu_spisu_rzeczy|p=StronicowyParser/obiekty}}}} {{LinkPatrz|p.szablony_wprowadzenia_napisu_spisu_rzeczy|StronicowyParser/Rozdziały/Tom IV}},
** jeżeli jest, to kiedy jego zawartość istnieje, wtedy jest liczona zmienna jego zawartości tego szablonu ze wzoru przechwytywania: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, co do liczenia wartości {{Code|wartosc}} {{Patrz|wartosc}}, wykorzystujemy funkcję: {{LinkŚródtytuł|spis_tresci}}, do liczenia szablonów nagłówka, ale przed pierwszymi pierwszymi artykułami, lub artykułami w nagłówku.
** A gdy ta zawartość nie istnieje, to wtedy do liczenia tego korzystamy z: {{LinkŚródtytuł|RozwazajLinie}}, do rozważania całych linii z obiektami, jakich są okładki,
* A gdy to nie jest ten szablon, to z: {{LinkŚródtytuł|RozwazajLinie}}, a jeżeli jego wartość zwracana istnieje, to ustawiana jest wartość: {{Code|podrecznik}} {{Patrz|podrecznik}}, na wartość zmiennej {{Code|wartosc}} równej odpwoadającej {{Code|true}}, czyli znalazł artykuł, ale nie okładkę, lub nie, przeciwnie na {{Code|false}}, a tu już nie.
; Obiekt znacznikowy, czyli typu{{dk}} {{nobold|{{Code|ZNACZNIK}}}}{{dk}}
* A gdy ten obiekt to {{Code|ZNACZNIK}}, gdy istnieje jego zawartość, to dla znacznika {{Tag|center}} dla tekstu przechwytywanego z jego zawartości: {{Code|<nowiki>^'*%s*(.-)%s*'*$</nowiki>}} z {{LzLua|mw.ustring.match}}, wtedy jest uruchamiana {{LinkŚródtytuł|spis_tresci}},
* A gdy to nie jest ten znacznik, a może to jest jeden z: {{LinkPatrz|p.znaczniki_wprowadzenia_tekstu|StronicowyParser/Rozdziały/Tom II}}, to wydzielamy z jego zawartości, z wartości przechwytywania, z takiego samego wzoru, co poprzednio, co później wywołujemy {{Code|{{sr|#p.HnNumerWprowadzeniaTekstu|b=tak}}}}, do badania zwykłych nagłówków, w przypadku badania jego nazwy, a potem z tym zwróconym parametrem, jako drugą wartość, a pierwszą jest tak otrzymana z przechwytywania, wsadzamy do funkcji: {{LinkŚródtytuł|spis_tresci}} i liczymy {{LinkPatrz|wartosc}}.
* A jeżeli nie dopasowano żadnego, z tych, znacznika, to liczymy {{LinkPatrz|wartosc}} z {{LinkŚródtytuł|RozwazajLinieZnacznikowe}}.
; Obiekty linkowe, czyli typu{{dk}} {{nobold|{{Code|LINKW}}}} lub {{nobold|{{Code|LINKZ}}}}, a więc kolejno linki wewnętrzne i zewnętrzne{{dk}}
* Dla obiektów: {{Code|LINKW}} i {{Code|LINKZ}}, wykorzystujemy funkcję: {{LinkŚródtytuł|RozwazajLinie}}, do liczenia: {{Code|wartosc}} {{LinkPatrz|wartosc}}, a gdy ona istnieje, to {{LinkPatrz|podrecznik}} ustawiamy na {{Code|true}}, dla przypadku, gdy napotkano artykuł nieokładkowy lub inne artykuły z niebieżącej książki, przeciwnie na {{Code|false}}, gdy nie są te obiekty, to podobnie liczymy dla obiektu {{Code|SZABLON}}.
===== Kod uruchamiany w zależności od wartości logicznej zmiennej {{Code|podrecznik}} =====
====== Zmienna {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|true}}}} ======
; Gdy zmienna {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} jest {{nobold|{{Code|true}}}}, i gdy zmienna {{nobold|{{Code|czy_rozdzial}} {{Patrz|czy_rozdzial}}}}, jest bez wartości{{dk}}
* Gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} równej {{Code|1}}, wtedy w zmiennej {{Code|wystepowanie_linku_lub_szablonu}}, liczy występowanie danego elementu na początku tekstu, pod warunkiem, że tekst rozpoczyna się od kodu z: {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, jest na początku linii z dokładnością do znaków cudzysłowów i odstępów, oraz nie kończy się na {{Code|.}}, czy potem, po odstępach jest jest znak {{Code|<nowiki>></nowiki>}}, co robimy przy pomocy: {{LzLua|mw.ustring.match}}, dla określonej linii nieporządnej linii.
** W ten sposób możemy sprawdzić, czy są artykuły, których nie należy uwzględniać w tabeli artykułów, a jeżeli nie ma takich artykułów, wtedy zwracane jest {{Code|nil}},
** Przeciwnie ustawiana jest wartość: {{Code|czy_rozdzial}} {{LinkPatrz|czy_rozdzial}}, na {{Code|true}}.
* A gdy {{Code|wartosc}} {{LinkPatrz|wartosc}} jest równa {{Code|0}}, wtedy {{ZobaczTeż|wartosc}} jest liczone występowanie elementu o pewnym {{Code|obiekt}} {{LinkPatrz|obiekt|StronicowyParser/Rozdziały}} i {{Code|kod}} {{LinkPatrz|kod|StronicowyParser/Rozdziały}}, co następnie zwracana jest wartość pusta z drugim nienilowym argumentem, gdy liczymy z: {{LzLua|mw.ustring.gsub}}, która zrzuca dwa parametry {{Code|tekst}} i liczbę występowań {{Code|ile}},
** Gdy występowań liczonych jest większa niż zero, wtedy zawartość zmiennej {{Code|tekst}} jest podmieniana, w innym wypadku już nie.
====== Zmienna: {{nobold|{{Code|podrecznik}} {{Code|{{=}}}} {{Code|false}}}}, w kodzie sterującym iterator, kiedy ma się zatrzymać, a kiedy nie, chyba, że skończą się zasoby danych w linii ======
; Gdy {{nobold|{{Code|podrecznik}} {{LinkPatrz|podrecznik}}}} ma wartość {{nobold|{{Code|false}}}}, wtedy dla żadnej wartości {{nobold|{{Code|wartosc}} {{LinkPatrz|wartosc}}}}{{dk}}
* Gdy zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{ZobaczTeż|czy_znaleziono_okladka}}, ma wartość prawdziwą, wtedy sprawdzamy, czy przed kodem w zmiennej {{Code|tekst}} jest ciąg znaków określone wzorem: {{Code|<nowiki>[%s%p]*<[%s<]-%s*'*%s*</nowiki>}} z {{LzLua|mw.ustring.match}},
** Jeżeli nie, to zwracamy w podobny sposób, jak to liczyliśmy wcześniej dla {{LinkZobaczTeż|wartosc}},
** A jeśli jednak tak, to zmienna: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}}, przybiera wartość odpowiadającej {{Code|false}}, dla tego przypadku nic nie zwracamy w tym rozgałęzieniu instrukcji warunkowej,
** W innym rozgłazieniu instrukcji '''jeśli''' dla: {{Code|czy_znaleziono_okladka}} {{LinkPatrz|czy_znaleziono_okladka}} {{LinkZobaczTeż|czy_znaleziono_okladka}}, przebiera wartość jednak {{Code|false}}, wtedy podobnie zwracamy wyniki, jak dla: {{LinkZobaczTeż|wartosc}}.
====== Gdy zmienna {{nobold|{{Code|podrecznik}}}} nie przyjmuje żadnej wartości logicznej ======
* Gdy zmienna {{Code|podrecznik}} {{LinkPatrz|podrecznik}}, nie przyjmuje żadnej wartości logicznej,
** Wtedy dla {{Code|wartosc}} {{LinkPatrz|wartosc}} dla żadnej jego wartości, funkcja jest zakańczana,
** Przeciwnie, liczymy wartość {{LinkPatrz|tak}}, jako ({{Code|<nowiki>tak=tak or (wartosc==1)</nowiki>}} {{LinkPatrz|tak}}), gdy {{Code|wartosc}} jest równa {{Code|1}}, czylli znaleziono, taki artykuł nieokładkowy danej książki , wtedy też jest zakańczana,
* W przeciwnym wypadku funkcja zwraca dwie wartości po kolei, tzn. {{Code|szablon}} i {{Code|tekst}}.
===== Dalszy ciąg funkcji w iteratorze wyszukujących pierwsze artykuły bez rozdziału =====
Dla elementów innych niż typu {{LinkZobaczTeż|obiekt}}, wtedy funkcja zwraca wyniki, jak dla {{LinkZobaczTeż|wartosc}}.
===== Użytek wartości ze zmiennej {{nobold|{{Code|tak}}}} =====
Na końcu w funkcji: {{LinkŚródtytuł|Wystepowanie}}, jest instrukcja warunkowa, w którym gdy zmienna {{Code|tak}} {{LinkPatrz|tak}} jest równa:
* wartości prawdziwej, to uruchamiana jest wtedy funkcja {{Code|funkcja1}} {{LinkPatrz|funkcja1}} z parametrem: {{LinkPatrz|szablon_spis_tresci}}, gdy znaleziono taki pierwszy artykuł bez nagłówka lub z nagłówkiem, ale nie dodatnim równaniowym.
* Przeciwnie bezparametrowo: {{Code|funkcja2}} {{LinkPatrz|funkcja2}}, gdy takiego czegoś dla linii nie znaleziono.
=== Kod funkcji iteratora - funkcji zwracanej przez jego generatora ===
Liczymy poszczególne linie z iteratora otrzymanego z {{Code|iter_main}} {{LinkPatrz|iter_main}}.
; Deklaracje zmiennych do używania w projekcie dla każdego rodzaju rozdziału, czyli też w nim nagłówka{{dk}}
* Deklarujemy użyte zmienne, jak: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|poziom_rozdzialu}} {{Patrz|poziom_rozdzialu}}, {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
; Rozdział dodatni równaniowy{{dk}}
* Sprawdzamy, czy ta linia reprezentuje rozdział dodatni równaniowy, wtedy mamy tylko ustawione zmienne: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}}.
* Gdy nie uzyskano takiego rozdziału, wtedy dla zmiennej: {{Code|czy_inne_rozdzialy_analizowac}} {{LinkPatrz|czy_inne_rozdzialy_analizowac|StronicowyParser/Rozdziały/Tom V/Część I}}, o wartości {{Code|false}}, inne linie nie będą sprawdzane, czy są rozdziałami.
* W innym wypadku, to rewidujemy funkcją. Gdy jednak to robimy, to dla {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}} odpowiadającej wartości fałszywej uruchamiamy funkcję {{LinkŚródtytuł|Wystepowanie}} z parametrem pierwszym {{Code|linia}} {{LinkPatrz|linia|StronicowyParser/Rozdziały}} oraz z, drugą (do wyszukiwania innych rozdziałów pierwszych spisu rzeczy, lub rozdziałów nilowych spisu treści - nieistniejących) i trzecią (funkcją, który z parametru: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, usuwa jej wartość).
; Pierwsza anonimowa funkcja{{dk}}
* Rozdziały w tym nagłówki spisu treści lub rzeczy
** Tą pierwszą funkcją, jest tak gdy: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, z wartością odpowiadającej fałszywej, ustawiamy {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|Spis treści}}, a {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} na {{Code|nil}}.
** Przeciwnie sprawdzamy wartość zmiennej: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a jeżeli ona istnieje, to liczymy jego rozdział i numerację na podstawie: {{Code|{{sr|#p.NumeracjaOrazTekstWprowadzeniaTekstu|b=tak}}}}.
** A gdy nie ma takiego rozdziału, to {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} jest ustawiana na: {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} na {{Code|nil}}.
** A jeżeli {{Code|szablon_spis_tresci}} {{LinkPatrz|szablon_spis_tresci}} nie istnieje, to nazwa rozdziału jest ustawiana na {{Code|Spis treści}}, a {{Code|numeracja_rozdzialu}} {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustawiona jest wtedy na {{Code|nil}}.
* Dalsze obliczenia spisowe
** Dalej liczymy: {{Code|czy_rozdzial_naglowka_hn}} {{Patrz|czy_rozdzial_naglowka_hn}}, zamieniając zmienną liczbową: {{Code|tak_ce_spis_tresci}} {{LinkPatrz|tak_ce_spis_tresci|StronicowyParser/Rozdziały/Tom IV}}, jeżeli ona nie istnieje, na wartość liczbową, a jeśli nie ma takiej wartości, to poziom rozdziału {{Code|poziom_rozdzialu}} {{LinkPatrz|poziom_rozdzialu}} przyjmuje wartość {{Code|2}}. Na podstawie przeciwnej wartości {{Code|czy_rozdzial_naglowka_hn}} {{LinkPatrz|czy_rozdzial_naglowka_hn}}, ustalamy, czy to jest rozdział centrowany, inicjując zmienną {{Code|czy_rozdzial_centrowany}} {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}} wartością {{Code|true/false}}. Wtedy początek rozdzialu {{Code|poczatek_rozdzialu}} {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} ustalamy na wartość nieistniejącą.
; Druga anonimowa funkcja{{dk}}
* Gdy nie nie dało się znaleźć odpowiednich pocżątków w liniach początkowych spisu, tzn. artykułów wstępnych, przed wszelkimi rozdziałami, wtedy nazwa rozdziału jest nilowana.
; Inne możliwe rozdziały niż dodatnie, albo możliwe linie tekstowe{{dk}}
* Gdy nie udało się znaleźć {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, jako z elementu nagłówka rozdziału dodatniego, to potrzebne do tego parametry liczymy z funkcji {{Code|parser}} {{LinkPatrz|parser}}, według:
<syntaxhighlight lang="lua">
local linia_temp;
linia_temp,nazwa_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany=parser(linia,true);
</syntaxhighlight>
Ta funkcja sprawdza, czy dana linia niebądąca rozdziałem dodatnim równaniowym, czy można uznać za rozdział, a jeżeli tego nie można zrobić, to ona zwraca wynik tylko {{Code|nil}}.
=== Wartości zwracane przez iterator ===
Gdy:{{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, gdy istnieje, wtedy ustalamy zmienną: {{Code|czy_w_spisie_tresci}} {{LinkPatrz|czy_w_spisie_tresci}}, na wartość {{Code|true}}, wtedy zbieramy dany rozdział, wraz z jego tekstem, i innymi parametrami, w sposób {{Patrz|zwracane parametry}}:
<syntaxhighlight lang="lua">
{naglowek,linia,},tekst_rozdzialu,poziom_rozdzialu,poczatek_rozdzialu,numeracja_rozdzialu,czy_rozdzial_centrowany;
</syntaxhighlight>
; Gdzie parametry wartości zwracanych{{dk}}
{{OpisParametrów
| 1 = {{Code|naglowek}} | _1 = Jest to {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}.
| 2 = {{Code|linia}} | _2 = Jak w: {{LinkPatrz|linia|StronicowyParser/Rozdziały}}.
| 3 = {{Code|tekst_rozdzialu}} {{Patrz|tekst_rozdzialu}} | _3 = Jest to właśnie {{Code|str}} {{LinkPatrz|str|StronicowyParser/Rozdziały/Tom V/Część I}} w kodzie.
| 4 = {{Code|poczatek_rozdzialu}} | _4 = Jak w: {{LinkPatrz|poczatek_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}.
| 5 = {{Code|numeracja_rozdzialu}} | _5 = Jak w: {{LinkPatrz|numeracja_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}.
| 6 = {{Code|czy_rozdzial_centrowany}} | _6 = Jak w: {{LinkPatrz|czy_rozdzial_centrowany|StronicowyParser/Rozdziały/Tom IV}}.
}}
Gdy {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}} nie istnieje, wtedy: {{Code|nagłówek}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}} i {{Code|tekst_rozdziału}} {{LinkPatrz|tekst_rozdzialu}}, kompletujemy funkcją: {{Code|{{sr|#p.KompletowanieSzablonoweZakodowanegoTekst|p=Szablonowe}}}}, i te wartości {{LinkPatrz|zwracane parametry}} zwracamy na zewnętrz funkcji.
Gdy przeciwnie, wtedy po uzyskaniu tych zmiennych odpowiednio, na nagłówek działamy funkcją: {{Code|__FUNKCJA2}} {{LinkPatrz|__FUNKCJA2|StronicowyParser/Rozdziały/Tom V/Część I}}, z parametrem identyfikującym, że to jest rozdział: {{Code|nazwa_rozdzialu}} {{LinkPatrz|nazwa_rozdzialu|StronicowyParser/Rozdziały/Tom IV}}, czy tekst rozdzialu {{Code|tekst_rozdzialu}} {{LinkPatrz|tekst_rozdzialu}}.
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
b8ji4g2j8p1ewxr69xahy88msvcaqj3
Wikibooks:Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część II
4
64134
556352
554806
2026-09-14T17:46:53Z
Persino
2851
556352
wikitext
text/x-wiki
<noinclude>{{ProstaStronaStart
| nagłówek = {{Podrozdział|{{ld2|StronicowyParser/ZbieranieDanychStron}}|Dokumentacja modułów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}.}}{{Autonawigacja|Pomoc:Spis treści}}
| stopka strony = {{StopkaSpisTreści}}{{Podrozdział|Koniec}}
}}</noinclude>
{{Spis treści}}
== {{Śródtytuł|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}}{{Code|p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi}} ==
Jest to dokończenie dokumentacji funkcji: {{Code|{{sr|#p.ZbieranieInformacjiStronyEwentualnieWrazSkojarzonymi|p=StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, ze strony: {{lr2|Moduły/StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
=== Opis działania funkcji z użytymi funkcjami lokalnymi zdefiniowanych w tej funkcji ===
Te funkcje, które są lokalne, są zdefiniowane w funkcji głównej, by je użyć w niej, i one jedynie służą na jej użytek.
==== Artykuły przeanalizowane lub brak pewnych elementów bazy ====
Aby pobrać dane artykułu (strony) książki, ewentualnie zwykłej strony, nie podręcznika, uruchamiana jest funkcja: {{LinkŚródtytuł|__FUNKCJA_POBIERANIE|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. Ta funkcja zwraca wartości, charakteryzująca, czy ta strona została zanalizowana, nawet ta aktualna, jakie są dane danej książki, itd.
Jeżeli pierwszy parametr zwracany tej powyżej funkcji nie ma wartości, wtedy funkcja się zakańcza z wynikami:
<syntaxhighlight lang="lua">
return wartosc_wyniku,dane_zebrane_ze_stron,czy_inna;
</syntaxhighlight>
A jeżeli jednak ta wartość jest zero, i taki artykuł został zrewidowany i sprawdzony, a także zbazowany, w takim razie działa funkcja: {{LinkŚródtytuł|StronaSubstFunkcja|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i zwracany jest wynik jak poprzednio.
==== Strony (artykuły) poza zakresem obsługiwanym książkowym ====
Jeśli ta funkcja nie została zakończona wcześniej, w tym wypadku, jeżeli strona nie jest artykułem książkowym, wtedy jest ustawiany kod problemu {{Code|strony poza zakresem obsługiwanym}} {{LinkPatrz|strony poza zakresem obsługiwanym|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, przy pomocy: {{Code|{{sr|#p.DodawanieProblemowegoElementuDoTablicy|p=StronicowyParser/Problemy}}}}.
==== Tworzenie bazy artykułu ====
Dla artykułu nieprzeanalizowanego tworzone są tabele artykułu, dzięki: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dlatego, którego szablony zostaną przeanalizowane, zebrane zostaną dane artykułu (strony). Jedna ze zmiennych jest tablica: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, charakeryzująca dane zebrane specjalnie dla artykułów danej książki.
==== Spisy książki ====
Zbierane są wiadomości o wszystkich spisach książki danego artykułu, na podstawie wywołania: {{LinkŚródtytuł|InneInformacjePrzebneDoAnalizowanejKsiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
<syntaxhighlight lang="lua">
local wartosc_wyniku,wynik_bledu,artykul_bazowy,kod_wyniku_bazowy=InneInformacjePrzebneDoAnalizowanejKsiazki();
</syntaxhighlight>
* Jeżeli wychodzi, że spis już został przeanalizowany wcześniej, ale względem przekierowań strony, wtedy funkcja się zakańcza z wartością wskazywanym przez jego drugi parametrem, czyli z: {{Code|wynik_bledu}}
* Jeżeli jego pierwsza wartość istnieje. Ta funkcja też zwraca parametr: {{Code|kod_wyniku_bazowy}} {{Patrz|kod_wyniku_bazowy}} (to jest nic innego jak: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}), który przyrównujemy do: {{Code|kod_wyniku_przekierowan}} {{LinkPatrz|kod_wyniku_przekierowan|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
* Trzecim jego parametrem jest: {{Code|artykul_bazowy}} {{Patrz|artykul_bazowy}} (to jest nic innego jak: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}), mówiący, jaki jest artykuł bazowy danego przekierowania, czyli na co wskazuje przekierowaanie.
==== Spis główny książki do spisu głównego bieżącego podręcznika ====
; Jeżeli{{dk}} {{nobold|{{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, zmiennej{{dk}} {{nobold|{{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}}}, ale wartość{{dk}}{{nobold|{{Code|kod_wyniku_bazowy}} {{LinkPatrz|kod_wyniku_bazowy}}}}, istnieje, wtedy zmienne{{dk}}
* {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, uzyskują wartości kolejno w sposób ponumerowany z: {{Code|adres_woluminu_bazowego_spisu_rzeczy}} {{LinkPatrz|adres_woluminu_bazowego_spisu_rzeczy|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
* A artykuł bazowy: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}} z: {{Code|artykul_bazowy}} {{LinkPatrz|artykul_bazowy}}.
; Tabele przestrzenne poszczególnych nazw książki{{dk}}
* Tablice kolejne przestrzenne, w których zebrane są informacje o ksiązkach (artykułach), liczymy kolejno ze zmiennych kolejno z kolejnych elementów tablicy ponumerowanej z {{Code|referencja_do_nowej_formy_spisu}} {{LinkPatrz|referencja_do_nowej_formy_spisu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
Uzyskane tabele są to tabele dla nazw adresu spisu głównego książki, na które wskazuje przekierowanie do bieżącego artykułu podręcznika, który też taki musi być, więc główny.
==== Operowanie na tablicy spisu książki ====
Gdy spis: {{Code|spis}} {{LinkPatrz|spis|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, istnieje aktualnej książki, co jest kluczem zmiennej: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}:
* Wtedy gdy mamy do czynienia z przekierowaniami dla aktualnej strony, wtedy liczymy z funkcji: {{Code|{{sr|#p.OdpowiednikNaPrzemianArtykularnychStronWoluminu|p=StronicowyParser/Potrzebne}}}},
* Liczymy artykuł: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i kod wyniku: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dla stron prowadzących przez przekierowanie, lub będących nieprzekierowaniami,
* Drugim parametrem jest zwracanym przez tą funkcję, czyli to jest: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, którego w dalszej instrukcji warunkowej mamy w niej: {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, która przyjmuje wartość zmiennej: {{Code|artykul}} {{LinkPatrz|artykul|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}},
* Dalej liczymy jedynie: {{LinkŚródtytuł|__FUNKCJA_ARTYKULU|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
A na samym końcu po tych instrukcjach warunkowych liczymy: {{Code|kod_wyniku_przekierowan}} {{LinkPatrz|kod_wyniku_przekierowan|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jeżeli owa nie ma wartości, wtedy ma ona wartość: {{Code|kod_wyniku}} {{LinkPatrz|kod_wyniku|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
==== Tworzenie nazwy modułu ====
Liczymy: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, z parametrów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, przy pomocy funkcji: {{Code|{{sr|#p["NazwaModułu"]|p=Nazwy/Tom III}}}}.
==== Przekierowania dla stron bez spisu ====
; Operacje na przekierowaniach, jeśli istnieją{{dk}}
* Liczymy: {{Code|wynik}} {{Patrz|wynik}}, z funkcji: {{LinkŚródtytuł|PrzekierownieAwaryjne|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, która wywoływana jest bez parametrów.
* Gdy: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} jest zmienną o wartości prawdziwej, wtedy zmienną: {{Code|self.nazwa_modulu_biezaca}} {{Patrz|self.nazwa_modulu_biezaca}}, równa się wartości zmiennej {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
; Przedwczesne zakończenie funkcji z wartościami zwracanymi{{dk}}
* Gdy zmienna: {{Code|wymik}} {{LinkPatrz|wynik}}, jest wartością odpowiadającej elementowi prawdziwemu, wtedy funkcja zakańcza się z wartością o tej zmiennej, co świadczy, że strona została już przeanalizowana.
==== Zmienne nazw danego bieżącego artykułu książki ====
; Gdy{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}, jest o wartości odpowiadającej prawdziwej{{dk}}
* Wtedy zmienne nazw odpowadającej książki bieżącego artykułu dla książki rozważanej, jeśli nie istnieją, to są one tworzone, w tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczach: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_woluminu}} {{Patrz|nazwa_przestrzeni_woluminu}}, {{Code|nazwa_woluminu}} {{Patrz|nazwa_woluminu}} i {{Code|nazwa_podstrony_woluminu}} {{Patrz|nazwa_podstrony_woluminu}}, elementy, którym kolejno przydzielamy wartości: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|nazwa_artykulu}} {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}.
==== Nazwa modułu aktualna lub bieżąca ====
Liczymy nazwę: {{Code|nazwa_modulu_aktualna_czy_biezaca}} {{LinkPatrz|nazwa_modulu_aktualna_czy_biezaca|StronicowyParser/ZbieranieDanychStron/Tom I}}, która jest wykorzystywana do liczenia do stron zbiorczych, jest to alternatywna strona, na której ma wyświetlić stronę zbiorczą, to się dzieje dzięki podzmiennej: {{Code|alternatywna}} {{Patrz|alternatywna}}, w tabeli: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}. Do liczenia są wykorzystywane zmienne ze strony: {{s|Podręcznik/Ustawienia/}}.
==== Dane artykułu i książki, bieżącej ====
; Dla strony bieżącej, według zmiennej{{dk}} {{nobold|{{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}}}{{dk}}
* Jest ustawiana zmienna o kluczu {{Code|artykul_biezacy}} {{Patrz|artykul_biezacy}}, dla zmiennej: {{Code|artykul_analizowany}} {{LinkPatrz|artykul_analizowany|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jej jest dawana wartość {{Code|true}}, tzn. czy dany artykuł jest bieżący.
* A dalej dla zmiennej: {{Code|tablica_ksiazki}} {{LinkPatrz|tablica_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu: {{Code|ksiazka_analizowana}} {{Patrz|ksiazka_analizowana}}, jest przydzielana wartość {{Code|true}}, mówiąca, czy rozważana książka jest bieżąca.
==== Informacje o analizowanym artykule ====
Jest tworzona zmienna pusta: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, jeśli nie istnieje, i jej podtablica ma być też pusta o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{Patrz|tabela_listy_danych_analizy_ksiazki2}}, jeśli nie istnieje.
Dalej są generowane podzmienne z: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, dotyczących poszczególnych obiektów obsługiwanych przez '''{{ld|StronicowyParser|Stronicowy Parser}}''', a elementy wewnętrz jej:
* Dla każdych z nich w śródku są zmienne: {{Code|CzyLink}} {{Patrz|CzyLink}}, i {{Code|CzyNum}} {{Patrz|CzyNum}}, mówiące, z jakiem typem obiektu mamy do czynienia, za pomocą wartości logicznych, tzn. kolejno, czy to są obiekty, do których istnieje link (z początkiem '''Link''', a nie '''Pobierz'''), i czy on jest numerowany przez to oprogramowanie.
==== Strona zbiorcza ====
Dla stron zbiorczych liczymy zawartość strony zbiorczej {{Code|strona_zbiorcza}} {{Patrz|strona_zbiorcza}}, jeżeli owo w ogóle taka jest, czyli za pomocą funkcji: {{LinkŚródtytuł|StronaZbiorcza|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, bez parametrów, którego wnętrze jedynie się uruchamia, gdy strona jest korzystana, tzn. gdy zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}} przyjmuje wartość prawdziwą.
==== Pełna nazwa książki ====
Liczymy pełną nazwę książki danego artykułu przy zmiennej: {{Code|pelna_nazwa_ksiazki}} {{Patrz|pelna_nazwa_ksiazki}}, z parametrów: {{Code|nazwa_przestrzeni}} {{LinkPatrz|nazwa_przestrzeni|StronicowyParser/ZbieranieDanychStron/Tom I}}, {{Code|nazwa_przestrzeni_ksiazki}} {{LinkPatrz|nazwa_przestrzeni_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, i {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, oraz dla nazwy artykułu, którym jest ciąg znakowy pusty, wtedy to charakteryzuje stronę główną podręcznika, której pełna nazwa strony jest jednocześnie szukaną pełną nazwą książki.
==== Liczenie rozwiniętej zakodowanej zawartości danego artykułu ====
Gdy to nie jest strona '''spis''', czyli ten artykuł nie jest spisem, tzn. tam się nie mieści żaden spis, to liczymy tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, {{Code|tablica_analizy_obiektow_strony_dany_modul}} {{LinkPatrz|tablica_analizy_obiektow_strony_dany_modul|StronicowyParser/ZbieranieDanychStron/Tom I}} i {{Code|tablica_danych_parametrow_szablonu_strony}} {{LinkPatrz|tablica_danych_parametrow_szablonu_strony|StronicowyParser/ZbieranieDanychStron/Tom I}}:
* Przy pomocy rekurencyjnej funkcji liczenia zakodowanej strony, czyli z: {{Code|{{sr|#p.RekurencyjnyZakodowanoSpreparowanyWikikodStrony|p=StronicowyParser/Tekst}}}}.
* Przeciwnie liczmy te wartości ze zmiennych z końcówką: {{Code|_ref}} {{LinkPatrz|_ref|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
; Działania w przypadku braku treści strony{{dk}}
* Gdy artykuł nie jest korzystany, tzn. według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}:
** Jeśli strona nie ma zawartości, to funkcja zakańcza się z błędem {{Code|0}}, co jest powiadomieniem, że strona jest niekorzystana, i ona nie ma zawartości.
* Przeciwnie, dla strony niemającej zawartości, tzn. gdy {{Code|strona_zbiorcza}} {{LinkPatrz|strona_zbiorcza}}, przyjmuje wartość prawdziwą, wtedy jest liczona zmienna: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, z kluczem {{Code|CzyStronaSubst}}, której jest przydzielana wartość {{Code|tak}}, tzn. czy to jest strona zbiorcza.
** Wtedy funkcja zwraca wartość {{Code|nil}}, co informuje, że strona jest korzystana, i nie ma jej treści.
==== Przypadek innej strony aktualnej niż bieżącej ====
Dla strony korzystanej według zmiennej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, i dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu {{Code|inna_strona_aktualna_niz_biezaca}} {{Patrz|inna_strona_aktualna_niz_biezaca}}:
* Gdy mamy inną stronę aktualną niż bieżącą, tzn. dla stron zbiorczych, i stron wyświetlanych na innnej stronie niż normalnie.
** Dla tej strony są liczone, dla tablicy podanej, zmienne o kluczach: {{Code|strona_ze_szablonem_strona_start}} {{LinkPatrz|strona_ze_szablonem_strona_start|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, {{Code|formatowanie}} {{LinkPatrz|formatowanie|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}} i {{Code|analiza_spis_tresci_korzystane}} {{LinkPatrz|analiza_spis_tresci_korzystane|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, dla stron ze szablonem stronicowym: {{s|StronaStart}} lub jego kolegów, z wbudowanym spisem lub ustawianym, wtedy w zależności od ustawianych parametrów są ustawiane te parametry.
; Szablony spisów{{dk}}
* Jednym ze spisów może być użyty szablon: {{s|Spis treści}} (skrót: {{s|TOCright}}) - dla wersji rozwiniętej, {{s|Spis treści zwinięty}} - zwiniętej, i inne szablony, też spisowe: {{s|TOCRamka}} i {{s|TOC limit}}, także: {{s|TOC}} i {{s|TOCRamka}}.
==== Iterowanie po stronie z {{lk|szablony stronicowe|szablonami stronicowymi}} ====
Iterujemy po całem tekście: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, według funkcji: {{LinkŚródtytuł|IterowaniePoElementachTekstu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, którego pierwszym parametrem jest ten zakodowany tekst, według bazy kodów: {{Code|{{m|Szablonowe}}}}.
==== Wystawienie do struktury tablic z danymi informacji o artykule ====
Tworzymy zmienną: {{Code|tablica_danych_nazwy_artykulu}} {{Patrz|tablica_danych_nazwy_artykulu}}, ze zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, z kluczem: {{Code|lista_podstron_woluminu}} {{LinkPatrz|lista_podstron_woluminu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, i dalszym kluczem: {{LinkPatrz|nazwa_artykulu|StronicowyParser/ZbieranieDanychStron/Tom I}}, i powinniliśmy otrzymać tablicę, lub piszemy tablicę pustą.
Dla zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}} - tablica informacji o artykule, tworzymy podtablicę o kluczu: {{Code|uchwyty_i_numeracje}} {{Patrz|uchwyty_i_numeracje}}, z większej tabeli: {{Code|tabela_listy_danych_analizy_ksiazki2}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki2}}, zdefiniowaną w głównej tablicy artykułu: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}} - tablica zmiennych artykułu.
==== Kod wikidanych rozważanego artykułu ====
Dla zmiennej: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, liczymy jej wartość o kluczu {{Code|link_wikidane}} {{Patrz|link_wikidane}}, którą jest tablica z kodem, jako jedyny numerowany parametr generowany funkcją: {{Code|{{sr|#p.KodyKlasStronyNaDanejWiki|p=Wiki}}}}, którą jest kod strony linku inteligentnego przyporządkowanej takiej nazwie strony.
==== Nazwa bazowa strony ====
Gdy dana strona jest korzystana, tzn.: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość prawdziwą, wtedy możemy policzyć element tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, o kluczu: {{Code|nazwa_bazowa_strony}} {{Patrz|nazwa_bazowa_strony}}, któremu przydzielamy policzoną nazwę ze zmiennej: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wykorzystując do tego funkcję: {{Code|{{sr|#p["PEŁNABAZOWANAZWASTRONY"]|p=Nazwy/Tom II}}}}.
==== Skrót do: '''pozawoluminowych stron''' lub '''niekorzystanych woluminów''', utworzone w celu łatwiejszego odwołania się do innych stron, czy artykułów książek ====
* Zmienna: {{Code|prefiks_numeru_woluminowego_strony}} {{Patrz|prefiks_numeru_woluminowego_strony}}, to jest zmienna skrótów, policzona dla niebieżącej strony dla: '''pozawoluminowych stron''' {{LinkPatrz|pozawoluminowych stron}}, lub '''niekorzystanych woluminów''' {{LinkPatrz|niekorzystanych woluminów}}.
Gdy artykuł jest niekorzystany, tzn. zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przybiera wartość fałszywą, wtedy dla:
; Gdy nie stworzono jeszcze prefiksu w zmiennej{{dk}} {{nobold|{{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}}}, która jest kluczem dla tabeli{{dk}} {{nobold|{{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}}}{{dk}}
Ale przedtem, gdy: {{Code|pozawoluminowe_strony}} {{LinkPatrz|pozawoluminowe_strony}}, jest niepoliczone, dla tej pierwszej pozycji listy, a dla drugiej już nie.
* '''pozawoluminowych stron''' {{Patrz|pozawoluminowych stron}} (innej strony niż bieżąca - dla przestrzeni nieksiążkowych), określonych przez zmienną: {{Code|pozawoluminowe_strony}} {{Patrz|pozawoluminowe_strony}} - która wcześniej była policzona, z bazowej nazwy strony według: {{Code|nazwa_bazowa_strony}} {{LinkPatrz|nazwa_bazowa_strony}}, i zmiennej: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wykorzystując do tego funkcję: {{Code|{{sr|#p["SkrótDoNumeruOdnośnika"]|p=StronicowyParser/Pomocne}}}}, liczymy pewien skrót, który umieszczamy w:
** zmiennej: {{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}, przydzielając mu wartość w postaci tablicy:
<syntaxhighlight lang="lua">
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,pozawoluminowe_strony,czy_artykul_korzystany,};
</syntaxhighlight>
* '''niekorzystanych woluminów''' {{Patrz|niekorzystanych woluminów}} (innej książki - woluminu, niż bieżąca - dla przestrzeni książkowych), określonych przez zaprzeczenie zmiennej: {{Code|korzystany_wolumin}} {{Patrz|korzystany_wolumin}} - która wcześniej była policzona, wtedy z nazwy: {{Code|nazwa_ksiazki}} {{LinkPatrz|nazwa_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom I}}, liczymy, korzystając z funkcji: {{Code|{{sr|#p["SkrótDoNumeruOdnośnikaDołączonejKsiążki"]|p=StronicowyParser/Pomocne}}}}, pewien skrót, którego wsadzamy do:
** zmiennej: {{Code|prefiks_numeru_woluminowego_strony}} {{LinkPatrz|prefiks_numeru_woluminowego_strony}}, przydzielając mu wartość w postaci tablicy:
<syntaxhighlight lang="lua">
tablica_danych_nazwy_artykulu.prefiks_numeru_woluminowego_strony={zrostek,not korzystany_wolumin,czy_artykul_korzystany,};
</syntaxhighlight>
==== Rozważania nad adresem artykułu bieżącego, czy nie ====
Gdy strona jest równa bieżącej według zmiennej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, wtedy wartość zmiennej: {{Code|strona}} {{LinkPatrz|strona|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, jest o wartości pustej, przeciwnie przyjmuje wartość: {{Code|nazwa_modulu}} {{LinkPatrz|nazwa_modulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
==== Szablony tekstu ====
Dla artykułu korzystanego, według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, uruchamiamy dwie tutaj funkcje, tzn.:
* Pierwsza: {{Code|{{sr|#p.UstawPobierzKorzystanie|p=StronicowyParser/SzablonyTekstu}}}}, aktualizująca zmienne, nie informacji, zbierania artykułów w zmiennej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
* Druga: {{Code|{{sr|#p.AktualizowanieSzablonowychTekstowychKompletowaniaInformacjiTekstu|p=StronicowyParser/SzablonyTekstu}}}}, aktualizujące tablice zbierania danych informacji o stronie dotyczące szablonów tekstu: {{s|Śródtekst}} i {{s|PobierzŚródtekst}}, nie w zmiennej: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}, tylko w: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, a także modyfikujące tekst: {{Code|tekst_rozwiniety_calego_artykulu}} {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, w której zbieramy wiadomości o stronie.
==== Zbieranie informacji o nagłówkach dodatnich o zaznaczonych do takiej analizy ====
* Dla zmiennej dla strony korzystanej według: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, która w tym przypadku przyjmuje wartość prawdziwą, gdy chcemy liczyć jej spis, to musi być ustawiona zmienna z: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tablicy: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu: {{Code|analiza_spis_tresci_korzystane}} {{LinkPatrz|analiza_spis_tresci_korzystane|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, przyjmującej ten parametr wartość prawdziwą.
* A dla niekorzystanej dla klucza z: {{LinkPatrz|analiza_spis_tresci_doloczone|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy przygotuwujemy tekst {{LinkPatrz|tekst_rozwiniety_calego_artykulu|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, do dalszej analizy, funkcją: {{Code|{{sr|#p.KodowanieInaczejZakodowanychNormKodowychTekstuWedleJegoTablicyKodowania|p=Szablonowe}}}}, by potem stworzyć tablicę spisu {{Code|toc}} {{Patrz|toc}}, zwracaną przez naszą opisywaną funkcję, i inne parametry ze strony, przy pomocy funkcji: {{Code|{{sr|#p.SpisRzeczyWedlePodanegoTekstu|p=StronicowyParser/GłównaFunkcjaZbieraniaDanychStron}}}}.
===== Ustawianie wygenerowanego spisu treści analizowanego artykułu =====
Zmienna tablicowa: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, a w niej podtablica o kluczu: {{Code|TOC}} {{Patrz|TOC}}, jest określana wartością tablicy: {{Code|toc}} {{LinkPatrz|toc}}, która została wygenerowana z funkcji generującą spis danego rozważanego artykułu.
==== Sprawdzanie spisu rozważanego artykułu ====
Funkcja przy pomocy parametrów liczy, czy podana strona jest stroną zbiorczą, według funkcji: {{LinkŚródtytuł|StronaSubstFunkcja|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, uruchamiana z pewnymi parametrami.
==== Niedokończone zbierania elementów spisowych o danej stronie niekorzystanej, gdy wcześniej było to niemożliwe ====
Zmienna: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, powinna przyjmować wartość fałszywą, przy innej wartości nie wchodzimy w ten krok instrukcji warunkowej.
* A funkcja: {{Code|SpisToc}} {{Patrz|SpisToc}}, powinna zwwrócić zawsze funkcję, którą nazwiemy: {{Code|czy_spis_function}} {{Patrz|czy_spis_function}}, to jej wywołanie raz jest prawdziwe, raz nilowe. Prawdziwe, gdy w tym wywołaniu funkcji głównej dla danego niekorzystanego artykułu udało się zebrać spis, a jeśli nie, to jej wynik jest fałszywy.
* Wtedy przy fałszywości tego wyniku ustawiane jest w tablicy o kluczu: {{Code|TOCSPIS_FUNCTION}} {{LinkPatrz|TOCSPIS_FUNCTION|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tablicy: {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, jej wartość, która jest równa: {{Code|czy_spis_function}} {{LinkPatrz|czy_spis_function}}.
** {{Code|czy_spis_function}} {{LinkPatrz|czy_spis_function}} - to jest funkcja, która jest zwrócona przez inną o nazwie: {{Code|SpisToc}} {{LinkPatrz|SpisToc}}.
==== Zbieranie danych w bieżącym artykule dotyczących nazwy przestrzeni nazw, nazw przestrzeni książki, nazwy książki i nazwy artykułu ====
Dla strony korzystanej: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, wtedy ta zmienna przyjmuje wartość {{Code|true}}, dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy jej podzmienne o kluczach:
* {{Code|link_wikidane}} {{LinkPatrz|link_wikidane}}, jaka jest tablica z kodem linku inteligentnego dla bieżacej strony jako pierwszy element,
* {{Code|tablica_aktualnego_artykulu}} {{Patrz|tablica_aktualnego_artykulu}}, którą jest tablica dla aktualnego artykułu,
* {{Code|tablica_aktualnej_przestrzeni_nazw}} {{Patrz|tablica_aktualnej_przestrzeni_nazw}}, którą jest tablica dla aktualnej przestrzeni nazw,
* {{Code|tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki}} {{Patrz|tablica_ksiazek_w_danej_przestrzeni_nazw_ksiazki}}, którą jest tablica dla aktualnej przestrzeni nazw,
* {{Code|tablica_aktualnej_ksiazki}} {{Patrz|tablica_aktualnej_ksiazki}}, którą jest tablica dla aktualnej książki.
Te tablice, jako dalsze podtablice, dokowane są w głównej tablicy: {{Code|self}} {{LinkPatrz|self|StronicowyParser/ZbieranieDanychStron/Tom I}}, o kluczu: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
* One zbierają informacje o książkach (artykułach) w zależności od kluczy, jakie one przyjmują nazwy.
==== Dane zebrane o szablonach tekstu - zbieranie informacji ====
Dla artykułów niekorzystanych, czyli wtedy wartość: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, przyjmuje wartość fałszywą, wtedy zmienną:
* {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}}, tworzymy w niej podtablicę o kluczu: {{Code|dane_zebrane_ze_stron}} {{LinkPatrz|dane_zebrane_ze_stron|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, wtedy dajemy jej wartość: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}.
* Dalej dla tablicy: {{Code|tabela_listy_danych_analizy_ksiazki}} {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}, tworzona jest podtablica pusta, jeśli nie istnieje, o kluczu: {{Code|dane_zebrane_ze_stron_lista}} {{Patrz|dane_zebrane_ze_stron_lista}}, która zbiera wszystkie elementy z analizowanych artykułów, tzn.:
** {{Code|tablica_danych_nazwy_artykulu}} {{LinkPatrz|tablica_danych_nazwy_artykulu}} - dane dotyczace danego artykułu.
Te stworzone tutaj zmienne kasujemy dla: {{Code|czy_artykul_korzystany}} {{LinkPatrz|czy_artykul_korzystany|StronicowyParser/ZbieranieDanychStron/Tom I}}, prawdziwego.
* Też dodatkowo usuwamy zmienną: {{Code|tablica_szablonu_tekstu_linkowe_korzystane}} {{Patrz|tablica_szablonu_tekstu_linkowe_korzystane}}, w tablicy: {{Code|tablica_zmiennych}} {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}}. Te usuwania dokonujemy przy pomocy wartości {{Code|nil}}, która ma takie właściwości.
* Też kasujemy w tej zmiennej podtablicę: {{Code|TOCSPIS_FUNCTION}} {{LinkPatrz|TOCSPIS_FUNCTION|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}}.
==== Zwracane wartości i ich opis ====
Ostatecznie funkcja zwraca po przeanalizowaniu wszystkiego, po zakończeniu zbierania wszystkich danych o danej stronie, według:
<syntaxhighlight lang="lua">
return self.tabela_listy_danych_analizy_ksiazki,tablica_zmiennych,true;
</syntaxhighlight>
Parametry zwracane:
{{OpisParametrów
| 1 = {{Code|self.tabela_listy_danych_analizy_ksiazki}} | _1 = Jak w: {{LinkPatrz|tabela_listy_danych_analizy_ksiazki|StronicowyParser/ZbieranieDanychStron/Tom VI/Część I}},
| 2 = {{Code|tablica_zmiennych}} | _2 = Jak w: {{LinkPatrz|tablica_zmiennych|StronicowyParser/ZbieranieDanychStron/Tom I}},
| 3 = {{Code|true}} | _3 = wartość zwracana, gdy strona jest analizowana i przeanalizowana pierwszy raz.
}}
{{BrClear}}
<noinclude><!--
-->{{ProstaStronaKoniec}}<!--
-->{{Kategoria|Opisy funkcji, w Lua w Scribunto, w modułach}}<!--
--></noinclude>
cj12lr9l4lcvrqq6ggorw4yswggbwlt
Szablon:Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1/opis
10
64192
556381
556078
2026-09-14T20:02:07Z
Persino
2851
556381
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji: {{m|Parametry|CzyCoNajwyżejJedenNumerowanyParametrSzablonu}}, w dokumentacji modułu: {{ld2|Parametry}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1}}
== Przykład ==
{{Pre start}}
{{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|1{{=}}nazwa2|nazwa3{{=}}6}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|1=nazwa2|nazwa3=6}}}}
{{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|1{{=}}nazwa2|nazwa3{{=}}6|3{{=}}nazwa4}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|1=nazwa2|nazwa3=6|3=nazwa4}}}}
{{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|2{{=}}nazwa2|nazwa3{{=}}6|4{{=}}nazwa4}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|2=nazwa2|nazwa3=6|4=nazwa4}}}}
{{Code|{{s|Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1{{=}}5|2{{=}}nazwa2|nazwa3{{=}}6}}}} → {{Tt|{{Wikibooks/Przykład/Parametry/CzyCoNajwyżejJedenNumerowanyParametrSzablonu/Wikikod 1|nazwa1=5|2=nazwa2|nazwa3=6}}}}
{{Pre koniec}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/Parametry}}
</includeonly>
5wc9149xintdrgtag7fsh6p3fm2gqz3
Szablon:StronaStart/styl-strony.css
10
64298
556330
556250
2026-09-14T14:36:19Z
Persino
2851
556330
sanitized-css
text/css
.ciało_strona figure.mw-halign-left[typeof="mw:File"] + ul,
.ciało_strona figure.mw-halign-left[typeof="mw:File"] + ol,
.ciało_strona .szablon_plik ~ ul,
.ciało_strona .szablon_plik ~ ol{
list-style-position:inside;
margin-left:0;
margin-inline-start:0;
}
.ciało_strona div.mw-highlight{
display:flex;
flex-direction:column;
max-width:100%;
overflow-x:auto;
overflow-y:hidden;
}
.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;
}
.ciało_strona code.zn_ogromne{
hyphens:auto;
word-wrap: break-word;
word-break: break-all;
}
.ciało_strona span.link > a{
hyphens:auto;
word-wrap: break-word;
word-break: break-word;
}
.ciało_strona span.link.link-ogromne > a{
word-break: break-all;
}
.ciało_strona span.link.link-ogromne > a > span.fonty_rodzina_sans,
.ciało_strona span.link.link-ogromne > a code{
word-break:unset;
}
.ciało_strona a code{
color:unset;
}
.ciało_strona code{
display:inline;
font-size:inherit;
line-height:1.56;
word-wrap:break-word;
word-break:break-word;
}
.ciało_strona p{
margin: 0.4em 0 0.5em 0;
font-size: inherit;
line-height: 1.3;
}
.ciało_strona p,
.ciało_strona dl{
margin-bottom:0.1em;
}
.ciało_strona p + p{
margin-top:0.4em;
}
.ciało_strona p+dl{
margin-top:0.1em;
}
.ciało_strona p + ol,
.ciało_strona p + ul{
margin-top:0.2em;
}
.ciało_strona table{
margin-bottom:0.5em;
}
.ciało_strona table + dl{
margin-top:1em;
}
.ciało_strona dl + div.mw-highlight,
.ciało_strona p + div.mw-highlight{
margin-top:0.1em;
}
.ciało_strona > :not(style):not(link):not(p).floatleft + p,
.ciało_strona > :not(style):not(link):not(p).floatright + p,
.ciało_strona > :not(style):not(link):not(p).tleft + p,
.ciało_strona > :not(style):not(link):not(p).tright + p,
.ciało_strona > :not(style):not(link):not(p).float-left-or-right + p,
.ciało_strona > figure.mw-halign-left + p,
.ciało_strona > figure.mw-halign-right + p{
margin-top:0;
}
@media print{
.noprint{
display:none;
}
.print{
display:block;
}
}
.gallerytext, .plainlinks{
text-align:left;
}
@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;
}
}
/*{{Kategoria|Szablony - arkusze stylów/StronaStart}}*/
gc5n9fvw7vmnr212v851txs5kepkspk
Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser
14
64299
556360
2026-09-14T19:15:52Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}”
556360
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu}}
b6lz6rtgdy8574elh6cxs9mf0u1nnnm
Kategoria:Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser/Rozdziały
14
64300
556361
2026-09-14T19:16:46Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser}}”
556361
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, z opisami, przykładów stron projektu/StronicowyParser}}
26ph3ta6n3jf4d3rlkkxg702dlrp77a
Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser
14
64301
556362
2026-09-14T19:18:07Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}”
556362
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu}}
37h9jjo3mkpr8t03n0iz5hi6aicw54a
Kategoria:Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser/Rozdziały
14
64302
556363
2026-09-14T19:18:40Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser}}”
556363
wikitext
text/x-wiki
{{Kategoria|Szablony, moduły Lua w Scribunto, bez opisów, przykładów stron projektu/StronicowyParser}}
i1f7hqfeqyu2oassm7wkjflbaxbnkpk
Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod 1
828
64303
556364
2026-09-14T19:22:19Z
Persino
2851
Utworzono nową stronę „require("strict"); local p={}; p["Przykład"]=function(frame) 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); local zrodlolua_modul=require(…”
556364
Scribunto
text/plain
require("strict");
local p={};
p["Przykład"]=function(frame)
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);
local zrodlolua_modul=require("Module:ŹródłoLua");
local wikikod=zrodlolua_modul["ŹródłoLua"](frame,{
{"strona",strona,},
{"id_rozdzialu1",id_rozdzialu1,},
{"id_rozdzialu2",id_rozdzialu2,},
{"tekst",tekst,},
});
return wikikod;
end;
return p
kne6afbk79jpbefh12enkcd6swjkbx9
Moduł:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod 1/opis
828
64304
556365
2026-09-14T19:23:12Z
Persino
2851
Utworzono nową stronę „; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}} {{#invoke:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod_1|Przykład}}”
556365
wikitext
text/x-wiki
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstWprowadzeniaTekstu/Kod_1|Przykład}}
46u1qktrbu9n2kzo5evltdhfwsd12dp
Kategoria:Szablony, zwykłe, przykładów stron projektu/StronicowyParser
14
64305
556366
2026-09-14T19:26:30Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, zwykłe, przykładów stron projektu}}”
556366
wikitext
text/x-wiki
{{Kategoria|Szablony, zwykłe, przykładów stron projektu}}
k0a9633pzcjycwu570hobfyvamwg7w6
Kategoria:Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały
14
64306
556367
2026-09-14T19:27:04Z
Persino
2851
Utworzono nową stronę „{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser}}”
556367
wikitext
text/x-wiki
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser}}
pe9f8legkd1iojkz3qn93qm26gil6o7
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1
10
64307
556368
2026-09-14T19:30:05Z
Persino
2851
Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}|{{{3}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>”
556368
wikitext
text/x-wiki
<includeonly>{{#invoke:StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}|{{{3}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
g71kk67tz1vjmpcgcd9sfvzlu8herk2
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1/opis
10
64308
556369
2026-09-14T19:35:47Z
Persino
2851
Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikibooks/Przykład…”
556369
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}}
== Przykład ==
; Przykład{{dk}}
* {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}
; Wynik{{dk}}
{{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
rpukeo4ts2hgymncm41ogqcnrhetzyb
556377
556369
2026-09-14T19:59:22Z
Persino
2851
/* Ilustracja */
556377
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|StronicowyParser/Rozdziały}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}}
== Przykład ==
; Przykład{{dk}}
* {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}
; Wynik{{dk}}
{{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
6qe9pkxhue9996uruggkyya5x3cs53u
556379
556377
2026-09-14T20:00:37Z
Persino
2851
/* Ilustracja */
556379
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|TekstPoNapisieWprowadzeniaTekstuStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1}}
== Przykład ==
; Przykład{{dk}}
* {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}
; Wynik{{dk}}
{{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/TekstPoNapisieWprowadzeniaTekstuStrony/Wikikod 1|Pomoc:Spis treści|Pomoc Wikibooks|Wstęp}}|język=mediawiki}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
nww4ago1iqzbl2ne7ef6a1wwc1xzmhs
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1
10
64309
556370
2026-09-14T19:38:28Z
Persino
2851
Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>”
556370
wikitext
text/x-wiki
<includeonly>{{#invoke:StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
3ucyq624uj1gui0as83nj9yzymleri3
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1/opis
10
64310
556371
2026-09-14T19:40:49Z
Persino
2851
Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}} == Przykład == ; Przykład{{dk}} * {{s|Wikib…”
556371
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}} w dokumentacji modułu {{ld2|Parametry}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}}
== Przykład ==
; Przykład{{dk}}
* {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
; Wynik{{dk}}
{{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}|język=mediawiki}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
pc8kjc1rhviflnzkpaxw1ysceq4tzqc
556378
556371
2026-09-14T20:00:08Z
Persino
2851
556378
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1}}
== Przykład ==
; Przykład{{dk}}
* {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
; Wynik{{dk}}
{{ŹródłoKodu|{{Wikibooks/Przykład/StronicowyParser/Rozdziały/ZwracanieSekcjiNapisuWprowadzeniaTekstuStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}|język=mediawiki}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
d20j6ur53i8skudddztl7yx1grjg88m
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1
10
64311
556372
2026-09-14T19:43:19Z
Persino
2851
Utworzono nową stronę „<includeonly>{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>”
556372
wikitext
text/x-wiki
<includeonly>{{#invoke:StronicowyParser/Rozdziały|NumerSekcjiStrony|{{{1}}}|{{{2}}}}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
kehhe0ozurkot3782i7nds8vck19bzf
Szablon:Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1/opis
10
64312
556373
2026-09-14T19:45:30Z
Persino
2851
Utworzono nową stronę „{{Podstrona dokumentacji}} <!-- DODAWAJ KATEGORIE NA DOLE STRONY --> == Ilustracja == To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|Parametry}}. == Kod szablonu - przykładu == {{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}} == Przykład == {{Pre start}} {{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/W…”
556373
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|Parametry}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}}
== Przykład ==
{{Pre start}}
{{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
{{Pre koniec}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
a6at8xvxrp76n4r835w4pty7aqx0vkn
556376
556373
2026-09-14T19:58:51Z
Persino
2851
556376
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}} w dokumentacji modułu {{ld2|StronicowyParser/Rozdziały}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}}
== Przykład ==
{{Pre start}}
{{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
{{Pre koniec}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
27kp26b3djtuzbg1zqr7e0y8cvqwdd3
556380
556376
2026-09-14T20:01:07Z
Persino
2851
/* Ilustracja */
556380
wikitext
text/x-wiki
{{Podstrona dokumentacji}}
<!-- DODAWAJ KATEGORIE NA DOLE STRONY -->
== Ilustracja ==
To jest szablon przykład ilustrujący działanie funkcji: {{m|StronicowyParser/Rozdziały|NumerSekcjiStrony}}, w dokumentacji modułu: {{ld2|StronicowyParser/Rozdziały}}.
== Kod szablonu - przykładu ==
{{PreWikikod|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1}}
== Przykład ==
{{Pre start}}
{{s|Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}} → {{Wikibooks/Przykład/StronicowyParser/Rozdziały/NumerSekcjiStrony/Wikikod 1|Wikibooks:Jak_przeglądać_Wikibooks|Opera}}
{{Pre koniec}}
{{BrClear}}
<includeonly>
{{Kategoria|Szablony, zwykłe, przykładów stron projektu/StronicowyParser/Rozdziały}}
</includeonly>
54g3zfstv8fkod7rv1fe5afb7ymqx2x
MediaWiki:Scribunto-doc-page-przykład
8
64313
556382
2026-09-14T20:37:22Z
Persino
2851
Utworzono nową stronę „{{Dokumentacja|zawartość=<!-- -->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi. {{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}} |* Dokumentacja funkcji: {{C…”
556382
wikitext
text/x-wiki
{{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}}}
ednzrsj0xui4hcwriq5uqxd46y57wuy
556385
556382
2026-09-14T20:40:53Z
Persino
2851
Persino przeniósł(-osła) stronę [[MediaWiki:Scribunto-doc-page-przykłady]] do [[MediaWiki:Scribunto-doc-page-przykład]], bez pozostawienia przekierowania pod starym tytułem
556382
wikitext
text/x-wiki
{{Dokumentacja|zawartość=<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}}}
ednzrsj0xui4hcwriq5uqxd46y57wuy
556388
556385
2026-09-14T20:50:59Z
Persino
2851
556388
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}|<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}
qo0nerm5fx835c7uul76laeal6i2sko
556389
556388
2026-09-14T20:51:46Z
Persino
2851
556389
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}|<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}}}
mszg5wlob9nf888g60t52moaypehugf
556390
556389
2026-09-14T20:52:12Z
Persino
2851
556390
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#if:{{ns:{{NAMESPACE}}}}|<!--
-->Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}}}
2lihy1zvre4zrgl06rfwkdurm0bn5xx
556391
556390
2026-09-14T20:53:50Z
Persino
2851
556391
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}}}
igg9tgw6g7tp08eacjanv6efggxmq9p
556392
556391
2026-09-14T20:59:14Z
Persino
2851
556392
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}}, {{Code|number}}, {{Code|boolean}}, {{Code|table}} i {{Code|nil}}.
}}}}
dqzzcoadga3dfu5zgh1b4z14ztka3ni
556393
556392
2026-09-14T21:03:15Z
Persino
2851
556393
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana).
}}}}
mml0ved0h7rb03u96cq0mjvqzcs864f
556394
556393
2026-09-14T21:09:34Z
Persino
2851
556394
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana).
* Ten opis opisuje kod w: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
fd85wdscnme2ng624nkiyrt97y4wpl0
556395
556394
2026-09-14T21:10:08Z
Persino
2851
556395
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana).
* Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
o74a3df621rq58msvvp8kb81em60m0e
556396
556395
2026-09-14T21:11:16Z
Persino
2851
556396
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowana).
* Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
kt043ao90v0ou6hqhxagh3w0jdrjxu9
556397
556396
2026-09-14T21:13:01Z
Persino
2851
556397
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
5n1x3agnusvrkjijb6zx30phgaj33kn
556398
556397
2026-09-14T21:20:41Z
Persino
2851
556398
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten opis opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
g0kbf7si9sw0cf8r0xzs0ou0ixz5a2u
556399
556398
2026-09-14T21:24:39Z
Persino
2851
/* */
556399
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
|{{Ns:Module}}=Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
1pu3reyz7jsr2k4dh7yglig5o67vmqj
556400
556399
2026-09-14T21:28:16Z
Persino
2851
/* */
556400
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)%/[Kk][Oo][Dd][%s_]*%d+}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+%/[Kk][Oo][Dd][%s_]*%d+}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+)}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+}}}}}}.
|
}}
}}
| #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
szzcajifkg533ity80knghgbb9auqqd
556402
556400
2026-09-14T21:53:48Z
Persino
2851
556402
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|%/[Kk][Oo][Dd][%s_]*%d+}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|}}
|
}}
}}
| #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
e43uil3h2vza9hr95t0kcdck6zkdvac
556403
556402
2026-09-14T21:55:32Z
Persino
2851
556403
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=}}
|
}}
}}
| #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
o85xytz6121nyv7q3yocncu82s1gnwq
556406
556403
2026-09-14T22:09:07Z
Persino
2851
556406
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|{{MediaWiki:Scribunto-doc-page-przykład/opis|podstrona=}}
|
}}
}}
| #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów.
: Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
rrxke8t4tpk3347lnfu5hjdin0e2jnb
556408
556406
2026-09-14T22:10:16Z
Persino
2851
556408
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}}
|
}}
}}
| #default = To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów.
: Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
}}}}
cupldgvg8l6ew62e0l7e1umyqez7fig
556410
556408
2026-09-14T22:12:00Z
Persino
2851
556410
wikitext
text/x-wiki
{{Dokumentacja|zawartość={{#switch:{{Ns:{{NAMESPACE}}}}
| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}}
|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}}
|
}}
}}
| #default = {{MediaWiki:Scribunto-doc-page-przykład/opis}}
}}}}
o5p6aivl81h0ruleoz0ci618uz068mv
556422
556410
2026-09-15T00:20:43Z
Persino
2851
556422
wikitext
text/x-wiki
{{Dokumentacja|zawartość=
{{#switch:{{Ns:{{NAMESPACE}}}}<!--
-->| {{Ns:Module}} = Moduły przykładów potrzebne do zaprezentowania idei działania, czy opisy, sformułowanych na polskim {{NAZWASERWISU|link=tak|wikipedia=tak|po=ie}} funkcji na stronach przestrzeni: {{Np|Module|link=tak}}, jak one działają, do czego służą, jakie przyjmują parametry, i co się z nimi robi.
<!-- -->{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+%/)[Kk][Oo][Dd][%s_]*%d+}}
<!-- -->|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=%/[Kk][Oo][Dd][%s_]*%d+}}
<!-- -->|{{#if:{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+)}}
<!-- -->|{{MediaWiki:Scribunto-doc-page-przykład/doc|podstrona=}}
<!-- -->|
<!-- -->}}
<!-- -->}}
<!-- -->| #default = {{MediaWiki:Scribunto-doc-page-przykład/opis}}
}}
}}
2fc7wktjc051035xzpi0m0dvl74ifam
MediaWiki:Scribunto-doc-page-przykład/doc
8
64314
556401
2026-09-14T21:51:48Z
Persino
2851
Utworzono nową stronę „<includeonly> * Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}. ; Inne przykłady znajdują się w katalogu{{dk}} * {{m|{{Dopasuj|ciąg={{PAGENAM…”
556401
wikitext
text/x-wiki
<includeonly>
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly>
jety0ixoh2rjo76oiu9q4w0r06mj990
556404
556401
2026-09-14T22:00:30Z
Persino
2851
556404
wikitext
text/x-wiki
<includeonly>
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}.
}}</noinclude>
el8jgj5muk7dxzh16wbobft5ktuix47
556405
556404
2026-09-14T22:04:24Z
Persino
2851
556405
wikitext
text/x-wiki
<includeonly>
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
4tmkbv02oaj5y8du29f7y281gt991rd
556407
556405
2026-09-14T22:10:08Z
Persino
2851
Persino przeniósł(-osła) stronę [[MediaWiki:Scribunto-doc-page-przykład/opis]] do [[MediaWiki:Scribunto-doc-page-przykład/doc]], bez pozostawienia przekierowania pod starym tytułem
556405
wikitext
text/x-wiki
<includeonly>
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
4tmkbv02oaj5y8du29f7y281gt991rd
556411
556407
2026-09-14T22:17:22Z
Persino
2851
556411
wikitext
text/x-wiki
<includeonly>
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}
{{#ifexist:{{FULLPAGENAME}}/opis|{{DivLinia}}|
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:{{PAGENAME}}|Przykład}}
}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
oxzjnqa865z9xtc1nreqrqe8kxskgyh
556412
556411
2026-09-14T22:25:03Z
Persino
2851
556412
wikitext
text/x-wiki
<includeonly>
{{#ifexist:{{FULLPAGENAME}}/opis|{{DivLinia}}|
=== Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu ===
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:{{PAGENAME}}|Przykład}}
=== Inne ===
}}
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
h2ks588dv1t1qgwi544o0l024hlw5u8
556414
556412
2026-09-14T22:59:02Z
Persino
2851
556414
wikitext
text/x-wiki
<includeonly>
{{Jeśli niepuste komunikat
| 1 = {{#ifexist:{{FULLPAGENAME}}/opis||tak}}
| wtedy = {{DivLinia}}
=== Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu ===
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:{{PAGENAME}}|Przykład}}
=== Inne ===
| przeciwnie = {{DivLinia}}
}}
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
78olzt3u4ouyu1uax9us2w9kx96yjzm
556419
556414
2026-09-14T23:28:55Z
Persino
2851
556419
wikitext
text/x-wiki
<includeonly>
{{Jeśli niepuste komunikat
| 1 = {{#ifexist:{{FULLPAGENAME}}/opis||tak}}
| dodatkowe = tak
| wtedy = {{DivLinia}}
=== Przykład ze zmiennymi i ich wartościami uzyskane z wywołania funkcji przykładu ===
; Przykład, z wykorzystaniem tego modułu, daje wyniki{{dk}}
{{#invoke:{{PAGENAME}}|Przykład}}
=== Inne ===
| przeciwnie = {{DivLinia}}
}}
* Dokumentacja funkcji: {{Code|{{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/.+%/([^%/]+){{{podstrona|}}}$}}}}}}, modułu {{lpg|Lua}} w {{lpr|Lua|Scribunto}}: {{Code|{{ld2|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^Wikibooks/Przykład%/(.+)%/[^%/]+{{{podstrona|}}}$}}}}}}.
; Inne przykłady znajdują się w katalogu{{dk}}
* {{m|{{Dopasuj|ciąg={{PAGENAME}}|wzór=^(Wikibooks/Przykład%/.+%/[^%/]+){{{podstrona|}}}$}}/}}<!--
--></includeonly><!--
--><noinclude>
{{Dokumentacja
| zawartość = Ogólny szablon komunikat potrzebny do budowy: {{s|MediaWiki:Scribunto-doc-page-przykład}}. Opisuje on w sposób ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}.
}}</noinclude>
2llixbam06s6jq8i2ig43l8iqilwfoq
MediaWiki:Scribunto-doc-page-przykład/opis
8
64315
556409
2026-09-14T22:11:31Z
Persino
2851
Utworzono nową stronę „To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów. : Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{…”
556409
wikitext
text/x-wiki
To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów.
: Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
2czhkvn1byctxuiujvk1v83iyzrg7s0
556413
556409
2026-09-14T22:29:39Z
Persino
2851
556413
wikitext
text/x-wiki
To jest strona komunikatu dla modułów bez opisu i opisu, by wyświetlić jego automatyczny opis ustawiony na tej stronie za pomocą pewnych szablonów, czy modułów. Opisuje on w sposób szczególny, nie ogólny, co ma się znaleźć na stronie w przestrzeni nazw: {{Np|Module|link=tak}}, w katalogu przykładów, opisującego funkcje zaimplementowane w postaci modułów.
Zobacz też komunikaty: Zobacz też komunikaty: {{s|int:Scribunto-doc-page-show}} i {{s|int:Scribunto-doc-page-does-not-exist}}. Te komunikaty wykorzystują ten szablon komunikat {{NS|k=w|w=tak|l=tak}}, dla nibypodprzestrzeni: {{m|Wikibooks/Przykład/}}.
* To jest opis dla modułów przykładów {{lpg|Lua}} w {{lpr|Lua|Scribunto}}, by opisać przykłady, jak działają pewne w tym języku funkcje, w postaci pewnych zmiennych i ich wartości.
** Te one mogą przyjmować różne typy zmiennych, w tym: {{Code|string}} (łańcuch znakowy), {{Code|number}} (liczba), {{Code|boolean}} (typ logiczny), {{Code|table}} (tabelka), {{Code|function}} (funkcja) i {{Code|nil}} (wartość anulowania).
* Ten komunikat opisuje kod w przestrzeni nazw: {{Np|Module|link=tak}}, w którym są wywoływane pewne funkcje, by wyliczyć wartości pewnych zmiennych, którymi operujemy znów innymi funkcjami, a następnie wartości tych elementów wraz z ich nazwami identyfikatorów wyświetlamy w postaci wywołanie ramki przykładu.
** Te identyfikatory i ich wartości mogą przyjmować dowolny typ danych według funkcji: {{m|ŹródłoLua|ŻródłoLua}}.
g6q4he47v09uyolju24quazoykl3qmj
Wikibooks:Administratorzy/Zobacz też
4
64316
556435
2026-09-15T01:36:19Z
Persino
2851
Utworzono nową stronę „* {{lr|Administratorzy}} * {{lr|Administratorzy interfejsu}} * {{lr|Biurokraci}} * {{lr|Stewardzi}}”
556435
wikitext
text/x-wiki
* {{lr|Administratorzy}}
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
pqql3h7j1fwui9zuq3w2t4oj9nou2vx
556438
556435
2026-09-15T01:38:04Z
Persino
2851
556438
wikitext
text/x-wiki
* {{lr|Administratorzy}}
* {{lr|Administratorzy interfejsu}}
* {{lr|Biurokraci}}
* {{lr|Stewardzi}}
* {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
6kn5opnoncrw83iuni7yaf40fmrwvtn
556441
556438
2026-09-15T01:43:56Z
Persino
2851
556441
wikitext
text/x-wiki
* {{lr|Administratorzy}} - {{lmg|Administrator/pl|Administratorzy na Meta}}
* {{lr|Administratorzy interfejsu}} - {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}}
* {{lr|Biurokraci}} - {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
* {{lr|Stewardzi}} - {{lmg|Stewards/pl|Stewardzi na Meta}}
bxhsbko5l4p06okw7gygf4ynzrxlri5
556442
556441
2026-09-15T01:45:20Z
Persino
2851
556442
wikitext
text/x-wiki
* {{lr|Administratorzy}} {{Pauza}} {{lmg|Administrator/pl|Administratorzy na Meta}}
* {{lr|Administratorzy interfejsu}} {{Pauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}}
* {{lr|Biurokraci}} {{Pauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
* {{lr|Stewardzi}} {{Pauza}} {{lmg|Stewards/pl|Stewardzi na Meta}}
1n2er8x5f7t3v8ygnjq7v614cku4zt3
556443
556442
2026-09-15T01:46:32Z
Persino
2851
556443
wikitext
text/x-wiki
* {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}}
* {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}}
* {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
* {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}}
2o3a3938qmyu4wsmj30txukwrnryyx3
556444
556443
2026-09-15T01:55:16Z
Persino
2851
556444
wikitext
text/x-wiki
* {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}}
* {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}}
* {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
* {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}}
{{BrClear}}
<noinclude>
{{Kategoria|Metastrony Wikibooks}}
</noinclude>
2zb0k39vkzbgnx4y9wybtxuvl46a6hv
556445
556444
2026-09-15T01:56:43Z
Persino
2851
556445
wikitext
text/x-wiki
* {{lr|Administratorzy}} {{Półpauza}} {{lmg|Administrator/pl|Administratorzy na Meta}}
* {{lr|Administratorzy interfejsu}} {{Półpauza}} {{lmg|Interface administrators/pl|Administratorzy interfejsu na Meta}}
* {{lr|Biurokraci}} {{Półpauza}} {{lmg|Bureaucrat/pl|Biurokrata na Meta}}
* {{lr|Stewardzi}} {{Półpauza}} {{lmg|Stewards/pl|Stewardzi na Meta}}<!--
--><noinclude>
{{Kategoria|Metastrony Wikibooks}}
</noinclude>
4nj8i9u6s3jsfokx8il5k8ujxfldnqu
Szablon:PrzypisStrona
10
64317
556481
2026-09-15T04:39:15Z
Persino
2851
Utworzono nową stronę „<includeonly><!-- -->{{#invoke:Ramka|Szablon<!-- -->| Nazwa = Cytuj | Funkcja = custom | url = {{{adres}}}/{{{1|{{{podstrona}}}}}} | tytuł = {{{2|{{{nazwa}}}}}} | praca = {{lz | s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}} | n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{se…”
556481
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| dodatkowe parametry = adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}}
| zmienna z argumentami ramki=tak
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
pg5fp5h7mbvbmdmj5fixbsdbbcv11jt
556482
556481
2026-09-15T04:55:19Z
Persino
2851
556482
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| zmienna sprawdzania parametrów = adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}}
| zmienna z argumentami ramki=tak
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
n86jjym5apxbob77h1sjiokopbusxbl
556484
556482
2026-09-15T05:13:30Z
Persino
2851
556484
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica={{#if:{{{potomek|}}}||tak}}
| zmienna z argumentami ramki=tak
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
ahmax1kdis2xu2u6ly5fgbnmnkjcaip
556485
556484
2026-09-15T05:14:37Z
Persino
2851
556485
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica=tak
| zmienna z argumentami ramki=tak
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
h6g4ariiajar5oe9lk0mtw73z63y9e9
556531
556485
2026-09-15T08:42:05Z
Persino
2851
556531
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom2
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica=tak
| zmienna z argumentami ramki=tak
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
268374xef41myv92sccfcicwl9g22b2
556548
556531
2026-09-15T11:26:16Z
Persino
2851
556548
wikitext
text/x-wiki
<includeonly><!--
-->{{#invoke:Ramka|Szablon<!--
-->| Nazwa = Cytuj
| Funkcja = custom2
| url = {{{adres}}}/{{{1|{{{podstrona}}}}}}
| tytuł = {{{2|{{{nazwa}}}}}}
| praca = {{lz
| s = {{Jeśli niepuste|{{{serwis|}}}|{{Dopasuj|ciąg={{{adres}}}|wzór=^(%a+:%/%/[^%/]+)}}}}
| n = {{Dopasuj|ciąg={{Jeśli niepuste|{{{serwis|}}}|{{{adres}}}}}|wzór=^%a+:%/%/([^%/]+)}}
}}
| data = {{#if:{{{data|}}}|{{Czas|Y-m-j|{{{data}}}}}}}
| data dostępu = {{Czas|j.m.Y|{{{data dostępu|}}}}}
| zmienna sprawdzania parametrów = adres=uri!;;adres=uri!;;1=txt!;podstrona;;podstrona=txt!;1;;2=txt!;nazwa;;nazwa=txt!;2;;serwis=uri
| bez argumentów szablonu=url;tytuł;praca;Funkcja
| zmienna z parametrami rodzica=tak
| zmienna z argumentami ramki=
}}</includeonly><noinclude>{{Dokumentacja}}</noinclude>
qjfd6ag0qjx15oq70jyogrxiblsf307